evalua.pas

{ ppc386 -va -vh *.pas }
{ COMIENZO DE DESCRIPCION

  Dado un \'arbol binario que representa una expresi\'on
  matem\'atica, retorna el resultado.
  keywords: arbol binario

FIN DE DESCRIPCION }
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
{ $ Id: evalua.pas 2002/04/05 13:20 mstroti Exp jdelia    $ }
program evalua_prueba;

uses arbbini;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function CREA0 (e: tipo_etiqueta) : tipo_arbol;
begin
  CREA0 := CREA2 (e, lambda, lambda);
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
function EVALUA (n: tipo_nodo) : integer;
var
  op1, op2: integer;
begin
  if HIJO_IZQ (n) = lambda then
    EVALUA := ETIQUETA(n)
  else begin
    op1 := EVALUA (HIJO_IZQ(n));
    op2 := EVALUA (HIJO_DER(n));
    case ETIQUETA (n) of
        ord ('+'): EVALUA := op1 +   op2;
        ord ('-'): EVALUA := op1 -   op2;
        ord ('*'): EVALUA := op1 *   op2;
        ord ('/'): EVALUA := op1 div op2;
    end; { case }
  end; {if}
end;

{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}
var
  A : tipo_arbol;
begin
  INICIALIZA_NODOS ;
  A := CREA2 (ord ('+'), CREA0 (5), CREA2 (ord ('*'),
                         CREA0 (6), CREA0 (7)) );
  writeln (EVALUA (A));
end.
{-----+-----+-----+-----+-----+-----+-----+-----+-----+-----}

Generated by GNU enscript 1.6.1.