You are on page 1of 2

INGENIERA INFORMTICA INGENIERA TELEMTICA Curso 2002-2003

Algoritmos y Estructuras de Datos Fundamentos de Programacin 2 PRCTICA 6 UNIVERSITAT DE VALNCIA

PRCTICA N 6: 2 sesiones
(del 12 de mayo al 23 de mayo de 2003)

rboles binarios de expresiones


0. OBJETIVOS El objetivo de esta prctica es la implementacin del TAD rbol binario y su uso para almacenar expresiones matemticas en memoria. 1. INTRODUCCIN Se desea crear un programa que bsicamente permita introducir y evaluar expresiones matemticas con operadores binarios, adems de otras opciones. El programa presentar un men que permita realizar las siguientes operaciones: 1. Introducir por teclado una expresin matemtica de nmeros enteros en notacin infija, sin parntesis. Los operadores reconocidos sern los siguientes: ^(elevado a), *(multiplicacin), /(divisin), +(suma) y (resta). Los espacios en blanco no se tendrn en cuenta. Ejemplo: 2 * 3 + 9/3 + * 2 3 9 / 3

2. 3. 4. 5. 6.

Visualizar la expresin introducida en notacin prefija. Ejemplo: + * 2 3 / 9 3 Visualizar la expresin introducida en notacin infija. Ejemplo: 2 * 3 + 9 / 3 Visualizar la expresin introducida en notacin postfija. Ejemplo: 2 3 * 9 3 / + Evaluar la expresin y mostrar el resultado en pantalla. Ejemplo: 2 * 3 + 9 / 3 = 9 Generar cdigo ensamblador por pantalla. Por ejemplo para la expresin: 42 * 7 + 2 / 3 se visualizar el siguiente cdigo: div 2 3 tmp2 mul 42 7 tmp3 add tmp3 tmp2 tmp1 Mostrar informacin del rbol binario:

7.

Altura del rbol. Si un rbol est vaco su altura es cero, y si no est vaco su altura es uno ms el mximo de las alturas de cada uno de sus hijos. Ejemplo: 3 Nmero de hojas del rbol. Si un rbol est vaco su nmero de hojas es cero. Si no est vaco, hay dos posibilidades, que el rbol sea una hoja en cuyo caso vale 1, o que no lo sea por lo que se sumarn las hojas que tenga el hijo izquierdo y el hijo derecho. Ejemplo: 4 Nmero de nodos del rbol. Si un rbol est vaco el nmero de nodos que tiene es cero, y si no lo est el nmero de nodos es 1 ms la suma de nodos del hijo izquierdo ms los del hijo derecho. Nmero de nodos internos del rbol. Se calcula restando al nmero de nodos el nmero de hojas. Indica si el rbol est lleno o no. Un rbol est lleno si el nmero de nodos es igual a 2^altura-1. 2. REALIZACIN DE LA PRCTICA En esta prctica se debe implementar la clase rbol binario mediante punteros, que se ha visto en clase de teora, y la clase pila utilizada en la tercera prctica. La informacin que almacenen ambas sern cadenas.

Prctica 6: rboles binarios de expresiones

1/2

INGENIERA INFORMTICA INGENIERA TELEMTICA Curso 2002-2003

Algoritmos y Estructuras de Datos Fundamentos de Programacin 2 PRCTICA 6 UNIVERSITAT DE VALNCIA

typedef string Valor; class Arbol { private: typedef Arbol *PunteroArbol; bool esvacio; Valor info; PunteroArbol izdo; PunteroArbol dcho; public: Arbol (void); /*Constructor*/ Arbol (const Arbol &); /*Constructor de copia*/ ~Arbol(void); /*Destructor */ void HacerArbol(Arbol &, Valor, Arbol &); bool ArbolVacio(void); bool Informacion (Valor &); Arbol &HijoIzdo(void); Arbol &HijoDcho(void);

};

class Pila { private: ... public: Pila bool bool bool bool };

(void); Apilar (Valor); Desapilar (void); CimaPila(Valor &); PilaVacia(void);

La generacin del rbol binario se realizar en dos pasos como se indica en los apuntes: 1. Primero se traduce la expresin a notacin postfija mediante dos pilas, quedando la expresin algebraica en una de ellas. 2. Posteriormente se genera el rbol binario. Se realizar un programa ##Expresiones.cpp que permita evaluar expresiones introducidas por teclado y el resto de opciones indicadas en el men. Este programa trabajar con objetos de la clase ArbolBinario y Pila. La generacin de cdigo ensamblador se puede hacer mediante una funcin recursiva que en el caso de ser un operador visualiza: la operacin, la variable temporal obtenida al generar cdigo para la rama izquierda y la variable temporal obtenida al generar cdigo para la rama derecha y la variable temporal, y finalmente retorna la variable temporal. Si no es un operador retorna la informacin que contiene el nodo. 3. ENTREGA DE PROGRAMAS Los siguientes ficheros se podrn entregar al profesor hasta el comienzo de la siguiente sesin de prcticas: 1. Ficheros de la clase Pila (##Pila.cpp y ##Pila.h). 2. Ficheros de la clase ArbolBinario (##ArbolBinario.cpp y ##ArbolBinario.h). 3. Fichero con el programa principal (##Expresiones.cpp).

Nota Muy Importante


Antes de poder empezar a realizar cualquiera de las prcticas es necesario presentar las hojas de especificacin de programas (documentacin de programas) con las tareas que se van a realizar en la prctica, explicando brevemente como se van a solucionar los problemas que se plantean.

ENTREGA DE PROGRAMAS: Al comenzar la sesin de prcticas del 26 al 30 de Mayo.


Prctica 6: rboles binarios de expresiones 2/2

You might also like