Foro de elhacker.net

Programación => Java => Mensaje iniciado por: romemarce en 18 Septiembre 2016, 02:45 am



Título: [noResuelto] Ayuda con String que contiene una ecuación en Java
Publicado por: romemarce en 18 Septiembre 2016, 02:45 am
Hola, necesito tu ayuda para resolver un problema, Supongamos que tenemos un:
String cuenta = "5+5(5+8*7)/4";

La pregunta es simple, averiguar el resultado de la operación.

Hasta ahora solo e implementado 2 posibles soluciones que terminaron en fracaso.

La primera opción que se me ocurrió fue resolver a través de paréntesis es decir:
Transformar nuestro string :

" 5+5(5+8*7)/4 "

, a la siguiente manera

"5+(5(5+(8*7)))/4 "

Esta opción es interesante pero se complica a la hora de remplazar y/o añadir un ' ( ';

La segunda opción es básicamente buscar en nuestro String el ultimo o mejor dicho el mas chico conjunto de parentesis y resolverlo, es decir " (5+8*7) ", pero cual es el problema en este caso, que no encuentro la manera de darle prioridad a que calcule primero la multiplicación o división antes que la suma o resta, para ser mas claro: 5+8*7 = 13*7 = 91, parece de retrasado pero así lo entiende la maquina.

Que manera u opción es la mas fácil y como lo harían, si tienen otra alternativa sera bien recibida.

PD: Si se le ocurre algún algoritmo para resolverlo, y no saben como expresarlo en java, también sera bien recibido, cualquier opinión me sirve.

Desde ya muchas gracias, este fue mi primer post, y fui lo mas detallado posible.


Título: Re: [noResuelto] Ayuda con String que contiene una ecuación en Java
Publicado por: bengy en 18 Septiembre 2016, 03:01 am
creo que la mejor opcion es utilizar la estructura Pila y cada vez que desapilas verificas si es numero o operador.
nota: usa la notacion prefija, es decir por ejemplo, + 4 5 el resultado es 9


Título: Re: [noResuelto] Ayuda con String que contiene una ecuación en Java
Publicado por: engel lex en 18 Septiembre 2016, 03:47 am
El algoritmo si va a ser un poco largo pero simple

Crea un array, si hay números seguidos los guarda con sus operadores, si hay un parentesis, lo guarda como una dimension adicional del array, ej
Código:
5+5(5+8*7)/4
Array[0]=5
Array[1]=+
Array[2]=5
Array[3][0]=5
....
Array[3][4]=7
Array[4]=/
Array[5]=4

Luego resuelves las operaciones mas anidadas (dentro de mas corchetes)
Para resolver cualquier operacion tomas todos los numeros y los colocas en un nuevo array, para  pasarlos por filtro de prioridad, es decir si hay un * primero resuelves los números a sus lados (multiplicación ) y rearmas el array con los resultados (y menos indices) hasta que el largo del array sea 1... haces esto con todos los anidados hasta que no quede sino el array principal y resuelves... no esta de más añadir que si te quedan 2 números en indices consecutivos puedes agregar en medio el * para que el proceso sea lineal y predecible


Título: Re: [noResuelto] Ayuda con String que contiene una ecuación en Java
Publicado por: roalamillo en 23 Septiembre 2016, 19:26 pm
http://www.lawebdelprogramador.com/foros/Java/825743-Ayuda-con-String.html