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.