• Viernes 8 de Noviembre de 2024, 11:47

Mostrar Mensajes

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

Páginas: [1] 2
1
Pascal / Re: Invalid File Handle
« 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
Pascal / Re: Invalid File Handle
« 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
Pascal / Invalid File Handle
« en: Martes 26 de Diciembre de 2006, 15:56 »
Saludos, tengo un grave problema. Primero quiero preguntarles: se puede hacer esto:

Código: Text
  1.  
  2. RegArch=Record
  3.                      AEnteros=File of integer;
  4.                      AReales= file of real;
  5.                      end;
  6.  
  7.  

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
Pascal / Ayuda Sobre Punteros.
« en: Jueves 5 de Octubre de 2006, 16:07 »
Tengo que duda nuevo:
Código: Text
  1.  
  2. type
  3.      ptrnodo=^nodo;
  4.      nodo=record
  5.                      elem:TElemento; {telemento=integer}
  6.                      sig:ptrNodo;
  7.                      end;
  8.  
  9.  

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
Pascal / Eliminar Datos De Un Archivo
« 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?

Código: Text
  1.  
  2. Assign(Archivo, 'auxi.dat'); &#60;----- Esto se hizo al principio del programa.
  3. Begin
  4.     Writeln('Ingrese &#60;0 para Eliminar todos los sudoku en el archivo.');
  5.     Writeln('o ingrese la posicion en el archivo para Eliminar un sudoku particular del archivo.');
  6.     Write('Su opcion? '); Readln(pos);
  7.     if pos&#60;0 then  Rewrite(Archivo)
  8.     else
  9.     if (Pos&#62;FileSize(Archivo)-1) then Writeln('Posicion afuera del archivo.') else
  10.     Begin
  11.         Assign(ArchAux, 'auxi.dat');
  12.         Rewrite(ArchAux);
  13.         For I:=0 to pos-1 do
  14.         Begin
  15.                 Seek(Archivo, I);
  16.                 Read(Archivo, AuxClase);
  17.                 Seek(ArchAux, I);
  18.                 Write(ArchAux, AuxClase);
  19.         end;
  20.         k:=fileSize(Archivo)-1;
  21.         For pos:=I+2 to k do
  22.         Begin
  23.             Seek(Archivo, pos);
  24.             Read(Archivo, AuxClase);
  25.             Seek(ArchAux, pos-1);
  26.             Write(ArchAux, AuxClase);
  27.         end;
  28.         Close(Archivo);
  29.         Close(ArchAux);
  30.         Erase(Archivo);
  31.         Rename(ArchAux, 'Datos.dat');
  32.         Reset(Archivo);
  33.     end;
  34. end;
  35.  
  36.  
El tipo de los datos no importa, pero el algoritmo, es correcto???
Grax

6
Pascal / Re: Resolver Sudoku
« 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... :blink:

7
Pascal / Re: Resolver Sudoku
« 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
Pascal / Re: Resolver Sudoku
« 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...  :unsure:

9
Pascal / Re: Resolver Sudoku
« 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
Pascal / Re: Resolver Sudoku
« 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
Pascal / Re: Resolver Sudoku
« 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
Pascal / Re: Resolver Sudoku
« 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....
Código: Text
  1.  
  2.          TipoPosicion=Integer;
  3.   PtrLista=^NodoLista;
  4.  
  5.   NodoLista=Record
  6.       Elem:TelemC;
  7.       sig:PtrLista;
  8.       end;
  9.  
  10.   Lista=Record
  11.                     List:PtrLista;
  12.                     Long:Integer;
  13.                     end;
  14.  
  15. Procedure VaciarLista(Var L:lista);
  16. var
  17. temp:ptrLista;
  18. Begin
  19.         while (L.Long&#62;0) and (L.List&#60;&#62;nil) do
  20.   Begin
  21.     temp:=L.List;
  22.     L.List:=L.List^.sig;
  23.     EliminarElemC(Temp^.Elem);
  24.     dec(L.Long);
  25.     dispose(temp);
  26.   end;
  27.   L.long:=0;
  28.   L.List:=NIL;
  29. end;
  30.  
  31.  

13
Pascal / Resolver Sudoku
« 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
Pascal / Re: B-tree (arboles B) Eliminacion
« 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
Pascal / Tdas Eficiencia En Uso De Momoria.
« en: Martes 6 de Diciembre de 2005, 22:49 »
Código: Text
  1.  
  2. Unit tdaAlgo;
  3. Type
  4.   PtrArlgo=^Sth;
  5.   Sth=Record
  6.       A:Ta;
  7.       B:Tb;
  8.       …
  9.       End;
  10.   TAlgo=ptrAlgo;
  11.  
  12. Procedure CrearAlgo(VAR A:TALGO);
  13. Begin
  14.   A:=Nil;
  15. End;
  16.  
  17. Procedure CargarAlgo(var A:Talgo);
  18. Begin
  19.   NEW(A);
  20.   With A^ do
  21.   Begin
  22.     …
  23. End;
  24. End;
  25.  
  26.  

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
Pascal / Re: Mostrar Matriz Graficamente.
« en: Jueves 24 de Noviembre de 2005, 18:02 »
ahhhhhh, no! pero yo me refiero con el formato que tiene una matriz.

Ejm:
Código: Text
  1.  
  2.         1 2 3
  3.         4 5 6
  4.         7 8 9
  5.  
  6.  

Se entiende?

17
Pascal / Mostrar Matriz Graficamente.
« 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
Pascal / B-tree (arboles B) Eliminacion
« 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
Pascal / Re: Error: La Cpu [marca] Ha Encontrado...
« en: Miércoles 2 de Noviembre de 2005, 20:33 »
Perdon por mi ignorancia  :unsure: , pero tengo que preguntar: Free Pascal es Turbo Pascal pero mas nuevo????

Ademas, no hay NINGUN tipo de cambio en cuanto al lenguaje????  :huh:

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?  :unsure:

20
Pascal / Re: Error: La Cpu [marca] Ha Encontrado...
« 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
Pascal / Re: Error: La Cpu [marca] Ha Encontrado...
« 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 !? :angry:

Como consecuencia de lo que esta pasando, otra pregunta: Cual es la ultima version de Pascal ???? y... donde la puedo bajar???

Gracias

22
Pascal / Error: La Cpu [marca] Ha Encontrado...
« 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!!!!!!!!!!  :angry:

Les agradeceria si me dieran una piesta de que pasa....

23
Pascal / Mostrar Arboles Graficamente
« en: Viernes 28 de Octubre de 2005, 22:15 »
Alguien me pasaria, o diria (pag web) de algun PROGRAMA, no quiero hacer nada yo  :D , (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
Pascal / Pregunta Sobre Asignacion De Punteros
« 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:

Código: Text
  1.  
  2. Type
  3.   ptrnodo=^nodo;
  4.   nodo=record
  5.     info:trotulo;
  6.     Hijo,sig:ptrnodo;
  7.     end;
  8.  
  9.   TRIE=ptrNodo;
  10.  
  11.  
  12. Procedure CrearNodo(var A:PtrNodo; x:trotulo);
  13. Begin
  14.      New(A); A^.hijo:=nil; A^.sig:=nil; AsignarRotulo(x, A^.info);
  15. end;
  16. {-------------------------------------------------------------------------------------------}
  17. Procedure AgregarClave(var A:Trie; X:trotulo);
  18. var
  19. I:integer; T,ant:PtrNodo;
  20. Begin
  21.   I:=1; IF A=nil then New(A);
  22.                 t:=a^.hijo;
  23. { ACA! mi pregunta es: En t que se &#34;pone&#34; 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?
  24. Si sigen leyendo el codigo un poco mas, se van a dar cuenta mejor de lo que pregunto }
  25.  
  26.  
  27.   While (I&#60;=Length(X)) do
  28.   Begin
  29.     While (T&#60;&#62;nil) and (IgualRotulo(T^.info, X[I])) do
  30.     Begin
  31.       Ant:=T;
  32.       T:=T^.hijo;
  33.       Inc(I);
  34.     end;
  35.     If T=nil then CrearNodo(T, X[I]) else
  36.     Begin
  37.       While (T&#60;&#62;nil) and (MenorRotulo(T^.info, X[I])) do
  38.       Begin
  39.         ant:=T;
  40.         T:=T^.sig;
  41.       end;
  42.       If t=nil then CrearNodo(T, X[I]) else
  43.         if Not IgualRotulo(T^.info, x[I]) then
  44.         Begin
  45.           CrearNodo(Ant^.sig, x[I]);
  46.           Ant^.sig^.sig:=T;
  47.           T:=ant^.sig;
  48.         end;
  49.     end;
  50.      T:=T^.hijo; Inc(I);
  51.   end;
  52.         AsignarRotulo(AsignarRotuloNulo, T^.info);
  53. end;
  54.  
  55.  
  56.  
Gracias!

25
Pascal / Insertar(a:arbolbalanceadoporaltura; X:trotulo);
« 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!!!!


Código: Text
  1.  
  2. Procedure AgregarHijo(VAR A:AVL; X:Trotulo; var cod:integer);
  3. Var
  4. Balance:Integer;
  5. Begin
  6. if A&#60;&#62;nil then
  7.   Begin
  8.     if IgualRotulo(x, A^.info) {x=A^.info} then cod:=1 else
  9.     If MenorRotulo(x, A^.info) {x&#60;A^.info} then AgregarHijo(A^.HI, X, cod) else
  10.                         AgregarHijo(A^.HD, x, cod);
  11.                 cod:=0;
  12.     Balancear(A);
  13.   end else
  14.   Begin
  15.     New(A); AsignarRotulo(x, A^.info); {A^.info:=X}
  16.     A^.hi:=nil; A^.hd:=nil;
  17.   end;
  18. end;
  19. {-----------------------------------------------------------------------------------}
  20. Function Altura(A:AVL):Integer; {Simplemente saca la altura de un arbol, los arboles nulos tiene altura -1}
  21. Var
  22. ASI,ASD:integer;
  23. Begin
  24.   If A=nil then ALtura:=-1 else
  25.   Begin
  26.     ASI:=Altura(A^.HI)+1;
  27.     ASD:=Altura(A^.HD)+1;
  28.     If ASI&#60;=ASD then Altura:=ASD else ALtura:=ASI;
  29.   end;
  30. end;
  31. {-----------------------------------------------------------------------------------}
  32. Procedure RotSimpleDerecha(var A:AVL);
  33. var
  34. q,temp:ptrAVL;
  35. Begin
  36.   if A&#60;&#62;nil then
  37.   Begin
  38.     Q:=A^.HI;
  39.     Temp:=Q^.hd;
  40.     Q^.HD:=A;
  41.     A^.HI:=temp;
  42.                 a:=Q;
  43.   end;
  44. end;
  45. {-----------------------------------------------------------------------------------}
  46. Procedure RotSimpleIzquierda(VAR A:AVL);
  47. Var
  48. q,temp:ptrAVL;
  49. Begin
  50.   If A&#60;&#62;nil then
  51.   Begin
  52.     Q:=A^.hd;
  53.     temp:=Q^.HI;
  54.     Q^.hI:=A;
  55.     A^.hd:=temp;
  56.                 a:=q;
  57.   end;
  58. end;
  59. {-----------------------------------------------------------------------------------}
  60. Procedure Balancear(var A:AVL);
  61. Var
  62. Balance{,stack}:Integer;
  63. Begin
  64.         stack:=0;
  65.   If A&#60;&#62;nil then
  66.   Begin
  67.     Balance:=Altura(A^.HI)-Altura(A^.HD);
  68.     While (Balance=2) or (Balance=-2) {and (stack&#60;=3)} do
  69.     Begin
  70.       If balance=2 then RotSimpleDerecha(A) else
  71.                                                               RotSimpleIzquierda(A);
  72.       Balance:=Altura(A^.HI)-Altura(A^.HD); {inc(stack);}
  73.     end;
  74.   end;
  75. end;
  76. {-----------------------------------------------------------------------------------}
  77.  
  78.  
Gracias, espero que me puedan ayudar...  :unsure:

Páginas: [1] 2