Dev - C++ - Dividir polinomio en monomios C++

 
Vista:
sin imagen de perfil
Val: 22
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dividir polinomio en monomios C++

Publicado por juan (13 intervenciones) el 18/05/2020 14:37:43
Necesito hacer un programa que dado un polinomio lo guarde en un string, lo divida en monomios y se asegure de que la estructura es correcta y devuelva error si no tiene esa estructura.
La estructura que debe tener el monomio es:

1. Signo + o -
2. COEFICIENTE: uno o mas dígitos enteros (0,...,9)
3. x
4. signo ^
5. EXPONENTE: uno o mas dígitos enteros (0,...,9)

He pensado en dividir el polinomio en monomios cada vez que lea un signo y guardarlo en un vector, pero no se como asegurarme de que cumple la estructura:
Tengo:

Código:

1
2
3
4
5
6
7
8
9
10
11
int main(){
  std::string ecuacion = "+3x^2-2x^1+9x^5-4+5x^3+1";
 
  for(int i = 1; i <= ecuacion.size(); i++){
    std::cout << ecuacion[i-1];
    if(ecuacion[i] == '+' || ecuacion[i] == '-'){
      std::cout << std::endl;
    }
  }
return 0;
}

Por consola imprime:

1
2
3
4
5
6
+3x^2
-2x^1
+9x^5
-4
+5x^3
+1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Dividir polinomio en monomios C++

Publicado por Alfil (1444 intervenciones) el 18/05/2020 21:12:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <ctype.h>
 
int main()
{
    int k;
    std::string ecuacion = "+3x^2-2x^1+9x^5-4+5x^3+1";
 
    for (int i = 0; i < ecuacion.size(); i++)
    {
        if (ecuacion[i] == '+' || ecuacion[i] == '-')
        {
            k = 0;
            std::cout << std::endl;
        }
        else if (k == 1 && isdigit(ecuacion[i]));
        else if (k == 2 && ecuacion[i] == 'x');
        else if (k == 3 && ecuacion[i] == '^');
        else if (k == 4 && isdigit(ecuacion[i]));
        else std::cout << " Monomio Erroneo -> ";
 
        std::cout << ecuacion[i];
        k++;
    }
 
    std::cout << std::endl;
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar