• Viernes 8 de Noviembre de 2024, 13: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]
26
Pascal / Caminomaslargo De Un Digrafo
« en: Lunes 17 de Octubre de 2005, 22:36 »
Saludos, nuevamente me veo en problemas, pues las profesoras se la han rebuscado para inventar que: un digrafo se implemente con otro TDA en este caso MAPEO A MUCHOS!!!! y encima quieren que implementemos la operacion CaminoMasLargo( G:tdigrafo; v1,v2:trotulo; var c:tLista); donde c es una lista de rotulos (es decir es el camino mas largo)

Segun yo lo entiendo, el digrafo=MapeoMuchos seria una lista de registro cada nodo de esa lista tiene dos campos uno es el dominio (vertices) y el otro seria el rango (Lista de adyacencia de ese vertice).

Bueno.... el codigo es este y mi favor que me digan si andaria:

Código: Text
  1.  
  2.  
  3. {------------------------------------------------------------------------------------------------------}
  4. Procedure CaminoMasLargo(G:tdigrafo; v1,v2:trotulo; var c:tdaLista.Lista; var cod:integer);
  5. var
  6. cjto:tdaCjtoD.conjunto; L:tdaLista.lista;
  7. Begin
  8.   if not DigrafoVacio(G) then
  9.   Begin
  10.     tdaLista.VaciarLista(C);
  11.     Dominio(g, cjto); {procedimiento que transforma el dominio del mapeo en un conjunto}
  12.     if (tdaCjtoD.Pertenencia(v1, cjto)) and (tdaCjtoD.Pertenencia(v2, cjto)) then
  13.     Begin
  14.       tdaLista.CrearLista(L); CaminoMasLargoAux(g, v1, v2, c, L);
  15.       tdaLista.Insertar(c, tdaLista.longitud(C)+1, v2, cod);
  16.           {Lista, posicion en la lista, elemento, codigo de error}
  17.     end;
  18.   end else cod:=4
  19. end;
  20. {---------------------------------------------------------------------------------------------------}
  21. Procedure CaminoMasLargoAux(G:Tdigrafo; v1,v2:trotulo; var c,L:tdaLista.lista);
  22. var
  23. Lrang:tdaLista.Lista; I,cod,pos:integer;
  24. Begin
  25.   tdaLista.Insertar(L, tdaLista.longitud(L)+1, v1, cod);
  26.   Valor(G, v1, Lrang, cod); {procedimiento del TDAMapeoAMucho que dado un dominio (=trotulo) te devuelve el rango en este caso Lrang}
  27.   I:=1;
  28.   
  29.   While (I<=tdaLista.Longitud(LRang)) do
  30.   Begin
  31.     tdaLista.Recuperar(Lrang, I, v1, cod); {recupera de la lista Lrang el elemento v1, en la posicion I, devuelve un codigo cod tambien}
  32.     Inc(I);
  33.     tdaLista.Localizar(Lrang, v1, pos, cod); {Localiza v1, en la lista lrang, si no lo encuentra cod<>0 else cod=0 y en pos devuelve la posicion del mismo}
  34.     
  35.     While (I<=tdaLista.Longitud(Lrang)) and (cod=0) do
  36.     Begin
  37.       tdaLista.Recuperar(Lrang, I ,v1, cod);
  38.       tdaLista.Localizar(L, v1, pos, cod);
  39.       Inc(I);
  40.     end;
  41.   end;
  42.   If (I<=tdaLista.Longitud(LRang)) or (IgualRotulo(v1,v2)) then
  43.   Begin
  44.     if (IgualRotulo(v1, v2)) and (tdaLista.Longitud(C)<tdaLista.Longitud(L)) then tdaLista.AsignarLista(L, C) else
  45.     if Not (IgualRotulo(v1, v2)) then CaminoMasLargoAux(G, v1,v2, c, L);
  46.   end;
  47.   tdaLista.Eliminar(L, tdaLista.Longitud(L), cod);
  48. end;
  49.  
  50.  
  51.  


Listo, que les parece, se entiende o no?.
PD: Los procedimientos y funciones tiene nombres significativos!!! Asique por ejemplo: igualRotulo(v1,v2) simplemente devuelve true si v1=v2 sino false}


Mas que Gracias !!!!!  :)

27
Pascal / Re: Vaciar Arbol Binario
« en: Martes 11 de Octubre de 2005, 02:09 »
Gracias por responder. Me quedo claro. En cuanto al que hacer arbolVacio(a) simplemente esto: ArbolVacio:=(A=nil) no lo escribi porque me parecio bastante claro, pero buh...  :D
   Como sea gracias.

28
Pascal / Vaciar Arbol Binario
« en: Jueves 6 de Octubre de 2005, 12:38 »
Hola de nuevo, queria preguntarles, esta mal lo que hice?
O sea la intencion es querer borrar el arbol binario, pero no se si estoy borrando o simplemente generando basura en memoria.

Otra Pregunta que se me desprende de esta es:
Cuando uno pasa un puntero por valor, que es lo que hace Pascal?
Copia un puntero a la variable pasada por valor (en este caso A) o crea todo la estructura denuevo? Cuando vean el codigo van a entender mejor lo que digo.


Código: Text
  1.  
  2. type
  3.         PtrTree=^Tree;
  4.         Tree=record
  5.                 info:TRotulo;
  6.     HD,HI:ptrTree;
  7.                 end;
  8.   Arbol=ptrTree;
  9. {-----------------------------------------------------------------------------------}
  10. {Primero viene el de mas abajo}
  11. Procedure VaciarArbolAux(A:arbol);
  12. Begin
  13.   if not ArbolVAcio(A) then
  14.   Begin
  15.     VaciarArbolAux(a^.HD);
  16.     VaciarArbolAux(A^.HI);
  17.                 if A<>nil then
  18.                               Dispose(A);
  19.   end;  
  20. end;
  21. {-----------------------------------------------------------------------------------}
  22. Procedure VaciarArbol(var A:arbol);
  23. Begin
  24.   if not ArbolVAcio(A) then
  25.   Begin
  26.     VaciarArbolaux(a);
  27.                                 a:=nil;
  28.   end;
  29. end;
  30.  
  31.  

PD: Si esta mal, me ayudan ha hacerlo bien????  :huh:

29
Pascal / Re: Analisis De Eficiencia De Algoritmos
« en: Miércoles 5 de Octubre de 2005, 23:00 »
Gracias!!!!  :)

30
Pascal / Re: Arreglo Donde Los Indices Son Caracteres
« en: Miércoles 5 de Octubre de 2005, 22:59 »
Gracias :)

31
Pascal / Recorrido Por Niveles
« en: Miércoles 5 de Octubre de 2005, 22:55 »
Hola, les queria pedir a alquien si me pasaria o almenos ayudaria o me dijera algun sitio donde pueda encontrar algun algorimo para recorrer arboles binario por niveles.
Gracias...


PD: Es que no me sale hacerlo !!!!!  :(

32
Pascal / Arreglo Donde Los Indices Son Caracteres
« en: Viernes 23 de Septiembre de 2005, 20:34 »
Hola denuevo. Pues... eso; como hago para que en una arreglo los indices sean TODOS los caracteres????

type

vec=array[aca que pongo?] of tipoelemento;

Gracias!!!

33
Pascal / Duda Sobre Recursividad
« en: Jueves 22 de Septiembre de 2005, 03:48 »
Buenas....

Tengo una duda GRAVE para el nivel que estoy (no lo voy a decir).

¿Pascal 6.0 o posterior apila las la informacion de las variables que se encuentran en la clausula VAR del procedimiento o funcion?

Por ejemplo:

Function nathing(muchas cosas irrelevantes para este ejemplo);
VAR
{las variables que van aca, su infomacion se apilan cuando se llama recursivamente????}
Begin
.......nathing:=nathing(bla bla);

end;

Gracias....

34
Pascal / Analisis De Eficiencia De Algoritmos
« en: Martes 13 de Septiembre de 2005, 21:59 »
Hola denuevo...
Les tengo una pregunta: Como calculo el tiempo exacto en funcion de n del siguiente algoritmo?

Function Rec1(n:integer):integer;
Begin
         if n<=1 then rec1:=1 else
         rec1:=rec1(n-1) + rec1(2*n);
end;

Gracias!!!

35
Pascal / Re: Analisis De Eficiencia De Algoritmos
« en: Viernes 9 de Septiembre de 2005, 01:30 »
Bueno estoi aprendiendo... &lt;_&lt;

Como sea: Estoy de acuerdo que
para I: n-1
para J: n


Pero... Por qué dices que: para K: (1+n)/2 ??? (Me explicarias claramente?) :unsure:

Gracias denuevo.

36
Pascal / Re: Tda Numero Binario Usando Lista Con Punteros
« en: Jueves 8 de Septiembre de 2005, 23:41 »
Gracias por contestar. Si me pedieron tdaNumeroBinario Usando el tdaLista!!!!
Anque ya lo entrege quiero dejarlo aca para que si ha alguien se lo piden en la univ' tengan almenos una guia. Igual no anda todo bien (la operacion suma "aveces" agrega un "1" al resultado.') y es bastante tonto.

37
Pascal / Analisis De Eficiencia De Algoritmos
« en: Jueves 8 de Septiembre de 2005, 23:33 »
Saludos, tengo un problema: No me sale este ejercicio: Expresar en funcion de n el tiempo de ejcucion exacto del sgt codigo;

Procedure Misterio(n:integer);
Var
     i,k,j:integer;

Begin
       For I:=1 to n-1 do
            For J:=1 to n do
                 for K:=1 to j do
                         {alguna proposicion que requiera tiempo de ejecucion = 5}
end;

Gracias de antemano.

38
Pascal / Tda Numero Binario Usando Lista Con Punteros
« en: Jueves 25 de Agosto de 2005, 20:42 »
Hola, soy nuevo en este foro. Talvez suene medio atrevido, pero quisiera que alguien me pasara o dejara leer un tda Numero Binario usando el tda Lista con punteros simplemente enlazada. Porque tengo que hacer un trabajo para la univ'. O sino, me gustaria que me den una ayuda, porque no se bien como hacer un procedimiento para pasar de un numero binario a un decimal (usando Listas como dije antes).
Yo defini el tda Numero Binario asi:
type
binario=record
                     num:Lista;
                     disp:tipoPosicion; {rango 0..32000 que tiene la posicion disponible en la lista num}
                     end;


Gracias de antemano.

Páginas: 1 [2]