|
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
26
« 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: {------------------------------------------------------------------------------------------------------} Procedure CaminoMasLargo(G:tdigrafo; v1,v2:trotulo; var c:tdaLista.Lista; var cod:integer); var cjto:tdaCjtoD.conjunto; L:tdaLista.lista; Begin if not DigrafoVacio(G) then Begin tdaLista.VaciarLista(C); Dominio(g, cjto); {procedimiento que transforma el dominio del mapeo en un conjunto} if (tdaCjtoD.Pertenencia(v1, cjto)) and (tdaCjtoD.Pertenencia(v2, cjto)) then Begin tdaLista.CrearLista(L); CaminoMasLargoAux(g, v1, v2, c, L); tdaLista.Insertar(c, tdaLista.longitud(C)+1, v2, cod); {Lista, posicion en la lista, elemento, codigo de error} end; end else cod:=4 end; {---------------------------------------------------------------------------------------------------} Procedure CaminoMasLargoAux(G:Tdigrafo; v1,v2:trotulo; var c,L:tdaLista.lista); var Lrang:tdaLista.Lista; I,cod,pos:integer; Begin tdaLista.Insertar(L, tdaLista.longitud(L)+1, v1, cod); Valor(G, v1, Lrang, cod); {procedimiento del TDAMapeoAMucho que dado un dominio (=trotulo) te devuelve el rango en este caso Lrang} I:=1; While (I<=tdaLista.Longitud(LRang)) do Begin tdaLista.Recuperar(Lrang, I, v1, cod); {recupera de la lista Lrang el elemento v1, en la posicion I, devuelve un codigo cod tambien} Inc(I); 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} While (I<=tdaLista.Longitud(Lrang)) and (cod=0) do Begin tdaLista.Recuperar(Lrang, I ,v1, cod); tdaLista.Localizar(L, v1, pos, cod); Inc(I); end; end; If (I<=tdaLista.Longitud(LRang)) or (IgualRotulo(v1,v2)) then Begin if (IgualRotulo(v1, v2)) and (tdaLista.Longitud(C)<tdaLista.Longitud(L)) then tdaLista.AsignarLista(L, C) else if Not (IgualRotulo(v1, v2)) then CaminoMasLargoAux(G, v1,v2, c, L); end; tdaLista.Eliminar(L, tdaLista.Longitud(L), cod); end;
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
« 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... Como sea gracias.
28
« 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. type PtrTree=^Tree; Tree=record info:TRotulo; HD,HI:ptrTree; end; Arbol=ptrTree; {-----------------------------------------------------------------------------------} {Primero viene el de mas abajo} Procedure VaciarArbolAux(A:arbol); Begin if not ArbolVAcio(A) then Begin VaciarArbolAux(a^.HD); VaciarArbolAux(A^.HI); if A<>nil then Dispose(A); end; end; {-----------------------------------------------------------------------------------} Procedure VaciarArbol(var A:arbol); Begin if not ArbolVAcio(A) then Begin VaciarArbolaux(a); a:=nil; end; end;
PD: Si esta mal, me ayudan ha hacerlo bien????
29
« en: Miércoles 5 de Octubre de 2005, 23:00 »
Gracias!!!!
30
« en: Miércoles 5 de Octubre de 2005, 22:59 »
Gracias
31
« 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
« 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
« 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
« 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
« en: Viernes 9 de Septiembre de 2005, 01:30 »
Bueno estoi aprendiendo... 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?) Gracias denuevo.
36
« 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
« 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
« 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.
|
|
|