Programación General > Pascal
Comprobar que un arbol es ponderado
lolita23:
Hola, pues mi duda es sobre un ejercicio que tengo que hacer en el que me piden que mire si un arbol es ponderado.
Mi primera duda es sobre cuando un arbol es ponderado para poder empezar a hacerlo.
Si alguien me lo puede aclarar se lo agradeceria para poder empezar a escribir codigo.
Para realizar el ejercicio me dan esta cabecera:
PROCEDURE ComprobarPonderado(VAR Ponderado: Boolean; VAR Peso:Integer)
m0skit0:
--- Cita de: "lolita23" ---ues mi duda es sobre un ejercicio que tengo que hacer en el que me piden que mire si un arbol es ponderado.
Mi primera duda es sobre cuando un arbol es ponderado para poder empezar a hacerlo.
--- Fin de la cita ---
Dudo mucho que te digan "haz un programa que compruebe si un árbol es ponderado" y no te digan qué es un árbol ponderado... ¡A ver si atendemos en clase! :lol: Y a falta de esto, aprende a buscar en Google <_<
http://www.google.es/search?client=fire ... con+Google
Y desde luego, no te vamos a hacer la tarea :P
lolita23:
Bueno pues muchas gracias por contestar y por la información.
Una vez aclarado lo de Arbol Ponderado: es q la suma de los pesos de cada subarbol izq no suma más q el subarbol derecho.
Me puesto a la tarea, ahora si alguien me lo puede revisar.
MUCHAS GRACIAS.
--- Código: Pascal ---TYPE tInfo=integer; tArbol=^tNodo; tNodo=record Peso:tInfo; iz,de:tArbol; end;VAR AB: tArbol; {Hago un recorrido en Enorden y sumo el peso de los nodos}PROCEDURE Recorrido (Arbol:tArbol;Var Peso:integer);Begin If (AB <> nil) then Begin Recorrido(Arbol^.iz,Peso); Peso:=Peso+Arbol^.Peso; Recorrido(Arbol^.de,Peso); End;End; PROCEDURE ComprobarPonderado (AB:Tarbol; VAR Ponderado:Boolean; VAR Peso:Integer)VAR X,SumaIzq,Sumador: Integer;BEGIN If (AB=Nil) Then Begin Ponderado:=true Peso:=0 End;{If} Else Begin {AB<>Nil} SumaIzq:=0; sumaDer:=0; Recorrido(Arbol^.iz,Sumaizq);{sumamos el subarbol izquierdo} Recorrido(Arbol^.de,SumaDer);{sumamos el subarbol derecho} x:=SumaDer-SumaIzq; If (x <= 10) Then Ponderado:=true else Ponderado:=False; End;{Else}END;
m0skit0:
Me parece que está perfecto, sólo una cuestión:
--- Código: Pascal ---If (x <= 10) Then Ponderado:=true ¿Por qué? ¿No debería ser x=0?
Y ahora que lo dices ( :rolleyes: ), ¿por qué un procedimiento? En este caso sería más conveniente una función (EstaPonderado por ejemplo) que devuelva un boolean...
lolita23:
Ante todo muchas gracias.
Hice un procedimiento porq me dan la cabecera y me piden que sea un procedimiento, no por otra cosa.
Y lo de <=10, porq si la diferencia es igual o menor que 10 entre los 2 subarboles es ponderado sino no.
Gracias de nuevo.
Navegación
[#] Página Siguiente
Ir a la versión completa