Te pedimos que programes una calculadora capaz de evaluar expresiones matemáticas sencillas (suma +, resta -, producto * y división entera /). Para que te resulte más fácil, te pondremos muchos paréntesis. En concreto: siempre que tengamos una operación, como por ejemplo, las sumas “3+4” o “(1*4)+2”, se dará un nivel de paréntesis adicional para agrupar la operación y los operandos: “(3+4)” y “((1*4)+2)”.
Escribe un programa que evalúe este tipo de expresiones extra-parentizadas.
Entrada
La entrada está formada por un número indeterminado, pero no superior a 500, de casos de prueba, cada uno de los cuáles consiste en una línea con una expresión matemática como las descritas. Todos los números que aparecen como operandos están entre el 0 y el 999, ambos inclusive.
Salida
Escribe, para cada caso de pruebas, el resultado de evaluar la expresión matemática. Ten en cuenta que no es posible dividir por 0: si esto ocurriera al evaluar una expresión, escribe “DIV 0” como salida correspondiente.
Se te garantiza que todas las expresiones están correctamente parentizadas, y que durante el curso de su evaluación no encontrarás números cuyo valor absoluto sea mayor que 1015.
Observación
La división entera consiste en dividir dos enteros y quedarse con el cociente, sin decimales, y descartar el resto, como al usar la división entera / en C o C++.
Puntuación
Se te dará 10 puntos por resolver cada una de las 10 entradas. La entrada i-ésima no contendrá expresiones con más de 1,2,3,5,10,20,30,100,300,1000 operaciones. Además, las primeras 3 entradas no contendrán números superiores al 9 (como el Ejemplo 1) y las primeras 5 entradas no contendrán ninguna división (como el Ejemplo 2).
Input
(2+2) (1*(4*(2*4))) ((1+(2-3))-2)
Output
4 32 -2
Input
(123+12) ((100-99)*(45-101))
Output
135 -56
Input
(1/4) (3/4) (4/4) (100/4) (((2+2)/(2+2))+1) (((2-2)/(2-2))+1) (((2-2)/(2+2))+1)
Output
0 0 1 25 2 DIV 0 1