|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Ocean Soul
1
« en: Miércoles 27 de Diciembre de 2006, 18:51 »
Gracias por contestar, si la declaracion es erronea... pero en el codigo esta bien Igual ya solucione el problema. Para mi sorpresa, parece que el tema de cerrar el archivo y abrirlo era la cuestion. Aparentemente, algo le pasa al archivo al hacer muchas veces " reset ... close " asique que directamente elimine estas lineas poniendolas como comentarios. Pero me queda la duda: no se cual es la razon real del error... Por eso les dejo todo el programa con el problema "solucionado", que es un trabajo de la universidad relacionado con arbol B, arbol 2D, mapeo, listas, conjuntos, arboles trie, si no me olvido de nada. El error se da en la unidad Tree2D y BTree, si quieren verlo deberan de eliminar de ellos los "{" y "}" cosa que no sera muy larga porque son unidades cortas. Gracias.
2
« en: Martes 26 de Diciembre de 2006, 23:53 »
Porque creen que tiene algo que ver con el tema de abrir y cerrar los archivos? Les escribo la descripcion del problema:
"6- Invalid file Handle This error is reported if an invalid file handle is passed to a DOS system call. This error should never occur; if it does, you know that the file variable is somehow trashed."
Igual les digo que no creo que tenga que ver con el tema de cerrar y abrir los archivos tampoco con el assign ya revise todo cuidadosamente. Creen uds que es posible que sea un error de Turbo pascal 7.0?
3
« en: Martes 26 de Diciembre de 2006, 15:56 »
Saludos, tengo un grave problema. Primero quiero preguntarles: se puede hacer esto: RegArch=Record AEnteros=File of integer; AReales= file of real; end;
Porque el compilador no me da error, pero si aparece el error en tiempo de ejecucion de "6- invalid file handle" al intentar cerrar alguno de los archivo del registro. Que puedo ser?
4
« en: Jueves 5 de Octubre de 2006, 16:07 »
Tengo que duda nuevo: type ptrnodo=^nodo; nodo=record elem:TElemento; {telemento=integer} sig:ptrNodo; end;
Mas adelante, ha una variable: ejemplo:nodo, en el campo sig se le asigna la direccion de memoria x1, luego se hace: dispose(ejemplo^.sig) entonces (ejemplo^.sig<>NIL) y (ejemplo^.sig=x1). Esto es cierto? Yo creo que si, porque "el" dispose debe solo borrar el elemento al que apunta "sig". Es decir borra el elemento de memoria, pero no reescribe en ejemplo^.sig "el" NIL, sino que lo deja como esta, apuntando a nada... Que me dicen?
5
« en: Jueves 5 de Octubre de 2006, 15:33 »
Saludos, tengo una pregunta frecuente... El siguiente codigo supuestamente elimina un dato del archivo, ningun error aparece. Pero algo debe estar mal. Me adyudan? Assign(Archivo, 'auxi.dat'); <----- Esto se hizo al principio del programa. Begin Writeln('Ingrese <0 para Eliminar todos los sudoku en el archivo.'); Writeln('o ingrese la posicion en el archivo para Eliminar un sudoku particular del archivo.'); Write('Su opcion? '); Readln(pos); if pos<0 then Rewrite(Archivo) else if (Pos>FileSize(Archivo)-1) then Writeln('Posicion afuera del archivo.') else Begin Assign(ArchAux, 'auxi.dat'); Rewrite(ArchAux); For I:=0 to pos-1 do Begin Seek(Archivo, I); Read(Archivo, AuxClase); Seek(ArchAux, I); Write(ArchAux, AuxClase); end; k:=fileSize(Archivo)-1; For pos:=I+2 to k do Begin Seek(Archivo, pos); Read(Archivo, AuxClase); Seek(ArchAux, pos-1); Write(ArchAux, AuxClase); end; Close(Archivo); Close(ArchAux); Erase(Archivo); Rename(ArchAux, 'Datos.dat'); Reset(Archivo); end; end;
El tipo de los datos no importa, pero el algoritmo, es correcto??? Grax
6
« en: Miércoles 27 de Septiembre de 2006, 01:06 »
Yo tengo el Free Pascal pero me parece mas horrible que pascal. Talvez vos no sepas: Un dia compile y ejecute un programa (largo) donde una variable, que no me di cuenta, no estaba declarada (era un simple entero). Ademas en el programa del sudoku en free pascal se corta mucho antes. Todo es muy raro...
7
« en: Martes 26 de Septiembre de 2006, 22:40 »
Ahora que lo pienso, talvez el pascal que yo tengo anda mal... saben de donde puedo bajarme uno que ande completamente bien?
8
« en: Martes 26 de Septiembre de 2006, 22:36 »
Bueno, el tda lista que incluyo en el archivo para descargar (tdaLista) es el que siempre uso... porloque no tiene ningun error. Si queres podes fijarte... veras que no hace nada del otro mundo... Ademas, ya ni se... se me estan llendo las ganas de seguir terminando el programa... yo queria terminarlo; ademas hace poco se me habia ocurrido otra idea que se basaba en suposiciones, para resolver el sudoku, bueno: no se... toy depre...
9
« en: Lunes 25 de Septiembre de 2006, 21:09 »
ups... les dejo el programa entero hasta donde yo hice, no lo termine. Elijan la opcion 8 posicion en archivo 0, luego la opcion 6 (resolver) despues la pos 1. y listo. El procedimiento que falla es el Resolver, que se encunetra en el archivo llamado sudoku.
Grax
10
« en: Viernes 22 de Septiembre de 2006, 23:41 »
Si queres te dejo el programa para que veas donde sucede el error. Se que va a hacer complicado entenderlo porque como lo unico que me interesa es saber si resuleve el problema, yo no respeto nada, me meto en la implementacion del tdaElem (ya veras...) pero de las listas, no toco nada.
De cualquier forma te respondo: El error me aparace, creo yo, porque el puntero queda en cualquier lado, en: "Dispose(temp)" pero se debe a lo que dije en el primer post, se inserto un elemento sin razon aparente con anterioridad. Ya entenderas todo....
No voy a pedirte que me corrijas todo solo dime (for favor) cual puede ser el error, no tarda mucho en aparecer.
Que me dices?
11
« en: Viernes 22 de Septiembre de 2006, 22:22 »
Si. Todas las cosas de mas las puse yo, pues ya no sabia que inventar para que andara.... De cualquier forma, me refiereo a la que vos me das y la que yo pongo... son equivalentes...
Y el elminarElemC(var E:elemC) es el procedimiento de otro tda que enrealidad no hace mas que E:=0; pues ElemC=interger.... lo puse porque asi es la teoria del tipo de dato abstracto...
12
« en: Viernes 22 de Septiembre de 2006, 19:04 »
Yo uso turbo pascal 7 (Tambien intente con free pascal, pero sucede lo mismo). Todo el TDA Lista me lo dieron en la universidad, igual yo lo verifique denuevo, y para mi esta todo bien... Que problema! Aca les dejo el codigo de la lista en el procedimiento que me sale el error, quien sabe, talvez si hay un error.... TipoPosicion=Integer; PtrLista=^NodoLista; NodoLista=Record Elem:TelemC; sig:PtrLista; end; Lista=Record List:PtrLista; Long:Integer; end; Procedure VaciarLista(Var L:lista); var temp:ptrLista; Begin while (L.Long>0) and (L.List<>nil) do Begin temp:=L.List; L.List:=L.List^.sig; EliminarElemC(Temp^.Elem); dec(L.Long); dispose(temp); end; L.long:=0; L.List:=NIL; end;
13
« en: Viernes 22 de Septiembre de 2006, 16:36 »
Saludos, como andan??? Hace mucho que no escribo.... Pero bueno, tengo un problema y pensé en que talvez alguien pueda ayudarme. Resulta que estoy haciendo un programa para que cargue y resuelva "un" sudoku (famoso juego japonés, creo) El problema es que por alguna razón, al vaciar una de las tres listas (como tipo de dato abstracto (TDA)) que uso, me para el programa para mostrarme "Invalid pointer operation" (en el TDA! Muy raro, simplemente porque una lista es una estructura muy simple de "hacer"…) que significa, dispose(nil) o dispose(ptrnovalido), pero NO ES CIERTO! De hecho, le seguí el paso y adivinen: Estaba lo mas bien, yo, viendo el "watches", mientras se ejecutaba el programa leía una línea que no tenia nada que ver con ninguna de las lista, cuando de repente apareció, en la lista en cuestión, un elemento agregado con una dirección de memoria rarísima, entonces trate de ver que elemento podría tener; al abrirlo, resulto que si era “basura”. Esto me parece imposible, pero como sucedió debe ser que si es posible… Pascal andará mal? Otra cosa es que yo nunca me “meto” en la implementación de las listas, por lo que cualquier tipo de error del la clase que les menciones, no deberían ocurrir… Que tienen para decirme? Gracias por leer mi mensaje.
PD: Si quieren les publico la parte del codigo "problematico".
14
« en: Martes 6 de Diciembre de 2005, 22:52 »
Me respondo yo mismo: Dejando ahora el archivo que tiene los procedimientos de: Eliminacion Insercion Busqueda
en un Arbol B, me costo encontrarlo y es por eso que los dejo.
15
« en: Martes 6 de Diciembre de 2005, 22:49 »
Unit tdaAlgo; Type PtrArlgo=^Sth; Sth=Record A:Ta; B:Tb; … End; TAlgo=ptrAlgo; Procedure CrearAlgo(VAR A:TALGO); Begin A:=Nil; End; Procedure CargarAlgo(var A:Talgo); Begin NEW(A); With A^ do Begin … … … End; End;
De esta se hace mas eficiente el uso de memoria, pues la asignación de memoria de esta estructura, solo se efectúa cuando se CargarAlgo(var A:algo), y no simplemente por declarar una variable A:TAlgo, en la cláusula VAR un programa que usa la unidad, que es lo que sucedería si no se usa un puntero. Esto es cierto, no? Pero… que pasa cuando… Program UsetdaAlgo; Uses tdaAlgo; Type Archivo=file of TAlgo*; Var Arch:Archivo; *Porque pascal permite cualquier tipo salvo un archivo... entonces que guarda en el archivo?? Supongo que lo que lo que esta guardado en la dirección de memoria de A. Entonces que pasa?????????
16
« en: Jueves 24 de Noviembre de 2005, 18:02 »
ahhhhhh, no! pero yo me refiero con el formato que tiene una matriz. Ejm: Se entiende?
17
« en: Miércoles 23 de Noviembre de 2005, 15:41 »
Hola, queria saber si alguien me puede pasar el codigo para mostrar una matriz cuadrada (o no).
Gracias!!!
18
« en: Martes 15 de Noviembre de 2005, 12:15 »
Saludos, necesito AYUDA: no me sale el procedimiento eliminar de un arbol B, si alguien tiene el codigo, no me lo pasaria?????? (Por favor). Antes que nada yo NO SE programacion orientada a objetos (o como sea que se le llame). Gracias denuevo.
Talvez a otro le pasa lo mismo que a mi asi que yo escribi el procedimiento de insercion en un arbol B, el codigo esta adjunto.
19
« en: Miércoles 2 de Noviembre de 2005, 20:33 »
Perdon por mi ignorancia , pero tengo que preguntar: Free Pascal es Turbo Pascal pero mas nuevo???? Ademas, no hay NINGUN tipo de cambio en cuanto al lenguaje???? Es decir, si escribo en Free Pascal un codigo, y lo pruevo y anda. Despues si lo paso a Turbo Pascal (es decir lo copio textualmente) andaria tambien??? No habria ningun problema, ni error ni nada?
20
« en: Miércoles 2 de Noviembre de 2005, 16:24 »
Pero... no puedo usar otro que no sea Turbo Pascal porque la universidad no me va ha haceptar los trabajos que tenga que entregar!!!!!!!!
Entonces, que hago?????? yo tengo Turbo Pascal 7.0, Windows Xp, y siempre uso una cuenta LIMITADA para hacer los programas...
21
« en: Miércoles 2 de Noviembre de 2005, 15:48 »
Que no hay error???? Es lo que yo pensaba, ademas el error del que hablo NO ES DE PASCAL!!!!! Pero se produce durante la ejecucion del programa pascal en pascal mismo. Otra pregunta: Porque cuando abro pascal, el procesador pasa de + o - 5% (uso normal) al 100% del uso !? Como consecuencia de lo que esta pasando, otra pregunta: Cual es la ultima version de Pascal ???? y... donde la puedo bajar??? Gracias
22
« en: Miércoles 2 de Noviembre de 2005, 03:06 »
Saludos, pues... simplemente estaba siguiendo la traza a un programa de arbol trie y derepente en esta parte del codigo: Writeln('...'); Write('...'); Readln(strings) {donde strings:string} me aparecio este cartel que dice: La cpu [marca] ha encontrado una instruccion no permitida [numeros raros] Cerrar o ignorar {ignorar no anda} Y NO PUEDO SEGUIR!!!!!!!!!! Les agradeceria si me dieran una piesta de que pasa....
23
« en: Viernes 28 de Octubre de 2005, 22:15 »
Alguien me pasaria, o diria (pag web) de algun PROGRAMA, no quiero hacer nada yo , (porque no tengo tiempo y ademas no se) que dado un arbole GENERICO lo muestre pero GRAFICAMENTE. Es decir algo asi: A / \ B C bueno, creo que se entiende lo que quiero decir. Porque los programa que yo hice para mostrar un arbol te lo muestra asi: ABC, pero no sabes quien es hijo de quien. Gracias
24
« en: Viernes 28 de Octubre de 2005, 01:21 »
Hola de nuevo. Tengo una duda sobre el manejo de punteros de pascal. En el siguiente codigo: Type ptrnodo=^nodo; nodo=record info:trotulo; Hijo,sig:ptrnodo; end; TRIE=ptrNodo; Procedure CrearNodo(var A:PtrNodo; x:trotulo); Begin New(A); A^.hijo:=nil; A^.sig:=nil; AsignarRotulo(x, A^.info); end; {-------------------------------------------------------------------------------------------} Procedure AgregarClave(var A:Trie; X:trotulo); var I:integer; T,ant:PtrNodo; Begin I:=1; IF A=nil then New(A); t:=a^.hijo; { ACA! mi pregunta es: En t que se "pone" la ubicacion de a^.hijo (que puede ser NIL o no) o simplemente un puntero NIL (dado el caso), que no tiene nada que ver con el A? Si sigen leyendo el codigo un poco mas, se van a dar cuenta mejor de lo que pregunto } While (I<=Length(X)) do Begin While (T<>nil) and (IgualRotulo(T^.info, X[I])) do Begin Ant:=T; T:=T^.hijo; Inc(I); end; If T=nil then CrearNodo(T, X[I]) else Begin While (T<>nil) and (MenorRotulo(T^.info, X[I])) do Begin ant:=T; T:=T^.sig; end; If t=nil then CrearNodo(T, X[I]) else if Not IgualRotulo(T^.info, x[I]) then Begin CrearNodo(Ant^.sig, x[I]); Ant^.sig^.sig:=T; T:=ant^.sig; end; end; T:=T^.hijo; Inc(I); end; AsignarRotulo(AsignarRotuloNulo, T^.info); end;
Gracias!
25
« en: Miércoles 26 de Octubre de 2005, 22:07 »
Buenas, alguien me prodria corregir el siguiente codigo: Es sobre Arboles balanceados por altura (AVL); El problema es cuando por ejemplo se ingresa el siguiente arbol: 50 13 40 el error bucle infinito se produce en el procedimiento Balancear(A:AVL). AYUDA!!!! Procedure AgregarHijo(VAR A:AVL; X:Trotulo; var cod:integer); Var Balance:Integer; Begin if A<>nil then Begin if IgualRotulo(x, A^.info) {x=A^.info} then cod:=1 else If MenorRotulo(x, A^.info) {x<A^.info} then AgregarHijo(A^.HI, X, cod) else AgregarHijo(A^.HD, x, cod); cod:=0; Balancear(A); end else Begin New(A); AsignarRotulo(x, A^.info); {A^.info:=X} A^.hi:=nil; A^.hd:=nil; end; end; {-----------------------------------------------------------------------------------} Function Altura(A:AVL):Integer; {Simplemente saca la altura de un arbol, los arboles nulos tiene altura -1} Var ASI,ASD:integer; Begin If A=nil then ALtura:=-1 else Begin ASI:=Altura(A^.HI)+1; ASD:=Altura(A^.HD)+1; If ASI<=ASD then Altura:=ASD else ALtura:=ASI; end; end; {-----------------------------------------------------------------------------------} Procedure RotSimpleDerecha(var A:AVL); var q,temp:ptrAVL; Begin if A<>nil then Begin Q:=A^.HI; Temp:=Q^.hd; Q^.HD:=A; A^.HI:=temp; a:=Q; end; end; {-----------------------------------------------------------------------------------} Procedure RotSimpleIzquierda(VAR A:AVL); Var q,temp:ptrAVL; Begin If A<>nil then Begin Q:=A^.hd; temp:=Q^.HI; Q^.hI:=A; A^.hd:=temp; a:=q; end; end; {-----------------------------------------------------------------------------------} Procedure Balancear(var A:AVL); Var Balance{,stack}:Integer; Begin stack:=0; If A<>nil then Begin Balance:=Altura(A^.HI)-Altura(A^.HD); While (Balance=2) or (Balance=-2) {and (stack<=3)} do Begin If balance=2 then RotSimpleDerecha(A) else RotSimpleIzquierda(A); Balance:=Altura(A^.HI)-Altura(A^.HD); {inc(stack);} end; end; end; {-----------------------------------------------------------------------------------}
Gracias, espero que me puedan ayudar...
|
|
|