sumamult.pas
{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION
Ejercicio tomado en el Ex\'amen Final del 26/7/2001:
Dado un arbol binario escribir una funci\'on que retorna
la suma de sus etiquetas y otro que retorna la suma de
aquellas etiquetas que son m\'ultiplo de 3.
keywords: arbol binario
FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: sumamult.pas 2002/04/05 18:25 jdelia Exp jdelia $}
program sumamult ;
uses u_arbbii, arbbtools;
type
bosque = bosque_arbbii ;
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function SUMA (n : curs_nodo; b: bosque): integer;
begin
if (n = lambda) then
SUMA := 0
else begin
SUMA := b.ETIQUETA (n)
+ SUMA (b.HIJO_IZQ (n), b)
+ SUMA (b.HIJO_DER (n), b);
end ; {if}
end; { SUMA }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function SUMA3 (n: curs_nodo; b: bosque): integer;
begin
if (n = lambda) then
SUMA3 := 0
else begin
if (b.ETIQUETA (n) mod 3 = 0) then
SUMA3 := b.ETIQUETA (n)
else begin
SUMA3 := 0;
end ; {if}
SUMA3 := SUMA3
+ SUMA3 (b.HIJO_IZQ (n), b)
+ SUMA3 (b.HIJO_DER (n), b);
end ; {if}
end; { SUMA3 }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
n : curs_nodo;
bos : bosque ; {El bosque donde estan los arboles }
begin
bos.INICIALIZA_NODOS ;
n := CREA_DE_STRING ('1{3,5{6{0,7},9}}', bos);
IMPRIME_N (n, bos);
writeln ('Suma de las etiquetas : ', SUMA (n,bos));
writeln ('Suma de etiq. multiplo de 3: ', SUMA3 (n,bos));
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
Generated by GNU enscript 1.6.1.