Sobre arboles y expresiones aritméticas
Necesito hacer lo siguiente: Programa que reciba una expresion del tipo:
(2+3) * (5 + ((10-8/2) * 2))
y calcule su resultado. Internamente el software debe hacer uso de los conceptos de árboles binarios y/o pilas.
Una expresion válida tiene las siguientes características:
Caracteres del 0~9, (, ), +, -, *, /,
Un digito puede estar seguido solamente de otro digito, un signo o cualquier paréntesis
Un signo debe estar seguido de un digito o un parentesis que abre
Si el usuario ingresa espacios en blanco estos se deben suprimir, y cualquier otro caractér que se ingrese debe generar un mensaje de error y evitar cualquier procesamiento al igual que si el usuario entra una cadena no válida, por ejemplo, una cadena con dos signos seguidos.
Omita la presendencia de signos, es decir las expresiones que no esten entre paréntesis se evaluarán de izquierda a derecha por ejemplo:
5 * 7 + 9 = 44
(2+3) * (5 + ((10-8/2) * 2))
y calcule su resultado. Internamente el software debe hacer uso de los conceptos de árboles binarios y/o pilas.
Una expresion válida tiene las siguientes características:
Caracteres del 0~9, (, ), +, -, *, /,
Un digito puede estar seguido solamente de otro digito, un signo o cualquier paréntesis
Un signo debe estar seguido de un digito o un parentesis que abre
Si el usuario ingresa espacios en blanco estos se deben suprimir, y cualquier otro caractér que se ingrese debe generar un mensaje de error y evitar cualquier procesamiento al igual que si el usuario entra una cadena no válida, por ejemplo, una cadena con dos signos seguidos.
Omita la presendencia de signos, es decir las expresiones que no esten entre paréntesis se evaluarán de izquierda a derecha por ejemplo:
5 * 7 + 9 = 44
