Vale, entendí el problema MAL desde el principio.
Visto eso, lo primero que se me ocurre, es:
Lees como cadena de caracteres.
Cuando detectes un paréntesis, copias (por ejemplo), en otra cadena, desde el siguiente símbolo al que abre paréntesis ' ( ' hasta el anterior al que cierra el paréntesis ' ) ' Y procesas esa parte (la simplificas (ahora explicaré el proceso de simplificar)). Una vez tienes la cadena sin paréntesis y con los términos que lo estaban multiplicados y demás, simplificas esa cadena,
Simplificar: una idea puede ser declarar un vector de (por ejemplo) 10 posiciones. Asumiendo entonces que tu programa podrá resolver desde grado 0 a grado 9.
Todas las posiciones inicializadas a 0.
Cada vez que detectes un elemento, sumas su valor al grado que corresponda(detectas un número? miras adelante para ver el grado ). Si detectas un igual, a partir del igual, todo irá con el signo cambiado.
Ejemplo:
ecuación muestra lo que queda por delante de la posición actual del indice de la cadena
inicio:
vector= 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
ecuación: -3x +4x^3 -5x^4 -2x^2 +x -4 = 5
primera iteración:
vector= 0, 0, 0, 0, 0, 0, 0, 0, -3, 0
ecuación: 4x^3 -5x^4 -2x^2 +x -4 = 5
segunda iteración:
vector= 0, 0, 0, 0, 0, 0, 4, 0, -3, 0
ecuación: -5x^4 -2x^2 +x -4 = 5
tercera iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, 0
ecuación: -2x^2 +x -4 = 5
cuarta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, -2, -2, 0 // +1 a x con grado 1
ecuación: -4 = 5
quinta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -4
ecuación: = 5
sexta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 // -4 -5 ya que tomamos el 5 como negativo
ecuación: vacia
Ahora supongamos que en realidad esta ecuación estaba dentro de un paréntesis. En ese caso, multiplicamos cada elemento del vector por dicho valor (si aumenta el grado de la x, se desplazan los elementos una posición en el vector).
Por ejemplo:
7 ( lo anterior) multiplicamos todos por 7.
7x (lo anterior) multiplicamos todos por 7, y los movemos para aumentar el grado
Para el vector anterior, el caso con 7x quedaría algo así:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 //antes
vector= 0, 0, 0, 0, -35, 28, 0, -21, -63, 0 //después
Espero haber ayudado.
Visto eso, lo primero que se me ocurre, es:
Lees como cadena de caracteres.
Cuando detectes un paréntesis, copias (por ejemplo), en otra cadena, desde el siguiente símbolo al que abre paréntesis ' ( ' hasta el anterior al que cierra el paréntesis ' ) ' Y procesas esa parte (la simplificas (ahora explicaré el proceso de simplificar)). Una vez tienes la cadena sin paréntesis y con los términos que lo estaban multiplicados y demás, simplificas esa cadena,
Simplificar: una idea puede ser declarar un vector de (por ejemplo) 10 posiciones. Asumiendo entonces que tu programa podrá resolver desde grado 0 a grado 9.
Todas las posiciones inicializadas a 0.
Cada vez que detectes un elemento, sumas su valor al grado que corresponda(detectas un número? miras adelante para ver el grado ). Si detectas un igual, a partir del igual, todo irá con el signo cambiado.
Ejemplo:
ecuación muestra lo que queda por delante de la posición actual del indice de la cadena
inicio:
vector= 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
ecuación: -3x +4x^3 -5x^4 -2x^2 +x -4 = 5
primera iteración:
vector= 0, 0, 0, 0, 0, 0, 0, 0, -3, 0
ecuación: 4x^3 -5x^4 -2x^2 +x -4 = 5
segunda iteración:
vector= 0, 0, 0, 0, 0, 0, 4, 0, -3, 0
ecuación: -5x^4 -2x^2 +x -4 = 5
tercera iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, 0
ecuación: -2x^2 +x -4 = 5
cuarta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, -2, -2, 0 // +1 a x con grado 1
ecuación: -4 = 5
quinta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -4
ecuación: = 5
sexta iteración:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 // -4 -5 ya que tomamos el 5 como negativo
ecuación: vacia
Ahora supongamos que en realidad esta ecuación estaba dentro de un paréntesis. En ese caso, multiplicamos cada elemento del vector por dicho valor (si aumenta el grado de la x, se desplazan los elementos una posición en el vector).
Por ejemplo:
7 ( lo anterior) multiplicamos todos por 7.
7x (lo anterior) multiplicamos todos por 7, y los movemos para aumentar el grado
Para el vector anterior, el caso con 7x quedaría algo así:
vector= 0, 0, 0, 0, 0, -5, 4, 0, -3, -9 //antes
vector= 0, 0, 0, 0, -35, 28, 0, -21, -63, 0 //después
Espero haber ayudado.