Enunciado:
Usted debe hacer un evaluador de expresiones matemáticas del tipo:
"4+3*11/5*(10+3)" Ver ejercicios 17.12, 17.13 y 17.14, pp 981-983.
Para esto puede, utilice la plantilla stack de la STL:
El evaluador aceptará los siguientes tipos de datos y operadores:
El evaluador trabajará únicamente sobre un tipo de dato específico seleccionado por el usuario. Por ejemplo, si se selecciona "Evaluar expresiones de Matrices" entonces se sabe que el programa sólo reconocerá matrices. Note el uso de llaves "{}" para distinguir entre distintos tipos de valores de números complejos, polinomios y matriz.
Note que este programa es susceptible a gran cantidad de errores debido a la entrada incorrecta de datos por parte del usuario. El evaluador debe informar estos errores y no debe caerse. El control de errores se debe realizar internamente mediante Excepciones. Debe contemplar, por ejemplo, que hay operadores no definidos (matrizA / matrizB) o que las matrices deben ser del mismo tamaño para ser sumadas.
El evaluador debe estar hecho para trabajar con el tipo abstracto Evaluable únicamente. Es decir, se debe utilizar herencia o más correctamente polimorfismo.
Por último, se debe utilizar sobrecarga de operadores para las operaciones entre los tipos. También se recomienda sobrecargar los operadores << y >>.
10%Extra: Evaluar expresiones de todos los tipos combinados. Por ejemplo, racionales y primitivas. Note que no todas las operaciones tienen sentido. Por ejemplo, multiplicar un número complejo por una matriz. También tiene que establecer algún mecanismo para distinguir entre los distintos tipos de datos.
Forma de entrega:
1. El trabajo debe ser realizado en tríos.
2. Debe subir su código a la plataforma educativa.
3. Debe entender el código porque habrá un quiz después de la entrega.
4. Deben presentar las siguientes secciones de la documentación:
Fecha de entrega:
14 de setiembre