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.