Regla de Ruffini

Mario Asís Cánovas

/* Este programa comprueba, para un polinomio dado por el usuario de hasta grado 4, si los enteros que se van introduciendo son (o no) raices del polinomio.

Nota para la interpretación de resultados: El primer número (sea o no cero) corresponderá siempre a una expresión de grado 4. Es decir, si introducimos un polinomio de grado 3, lo haremos de la siguiente forma: 0,1,2,-2,-1. Al interpretar los coeficientes haremos de la misma manera , si vemos 0,0,1 corresponderá a un 1, si vemos 1,0,0, corresponderá a un x^2. */

/* Este programa sirve para comprobar por Ruffini si un número es raíz de un polinomio 
    de grado igual o inferior a 4. */

#include <iostream>
#include <math.h>

 using namespace std;

 int main()
{

float A, B, C, D, E, X, x, a, b, c, d, e, Y, y, f, g, h, i, z, Z, j, k, l;

cout << "Introduce los coeficientes del polinomio como si fuera de grado 4:" << endl;
cout << "{";
cin >> A;
cout << ",";
cin >> B;
cout << ",";
cin >> C;
cout << ",";
cin >> D;
cout << ",";
cin >> E;
cout << "}" <<endl;

cout << "Introduce ahora la raiz a comprobar: ";
cin >> x;

a = A;
b = a*x+B;
c = b*x+C;
d = c*x+D;
e = d*x+E;

while (e!=0) {cout <<endl <<"El numero "<< x << " no es raiz del polinomio."<< endl
                   << "Introduce otro entero a comprobar: ";
    cin >> x;

    a = A;
    b = a*x+B;
    c = b*x+C;
    d = c*x+D;
    e = d*x+E;}

if (e==0){cout << endl << "El numero " << x << " es raiz del polinomio."<<endl<<
        "Tomara la forma: [x + ("<<-x<<")]"<<endl<< "Estos son los coeficientes 
        del polinomio resultante: " << a << "," << b << "," << c << "," << d<<endl<<endl;}
if (b==0&&c==0&&d==0&&e==0){ cout<<endl<< "La descomposicion en raices ha terminado."
                                 <<endl<< "Sus raices son: "<<x<<","<<0;
return 0;}

cout << "Introduce ahora la siguiente raiz a comprobar: ";
cin >> y;

f = a;
g = f*y+b;
h = g*y+c;
i = h*y+d;

    while (i!=0) {cout <<endl <<"El numero "<< y << " no es raiz del polinomio."<<endl<< 
                  "Introduce otro entero a comprobar: "<<endl;
        cin >> y;

        f = a;
        g = f*y+b;
        h = g*y+c;
        i = h*y+d;}

     if (i==0){cout <<endl << "El numero " << y << " es raiz del polinomio."<<endl<<
                     "Tomara la forma: [x + ("<<-y<<")]"<<endl<< "Estos son los coeficientes 
                      del polinomio resultante: " << f << "," << g << "," << h <<endl<<endl;}
    if (g==0&&h==0&&i==0){ cout<<endl<< "La descomposicion en raices ha terminado."<<endl<< 
                           "Sus raices son: "<<x<<","<<y<<","<<0;}

cout << "Introduce ahora la siguiente raiz a comprobar: ";
cin >> z;
       j = f;
       k = j*z+g;
       l = k*z+h;

        while (l!=0) {cout <<endl <<"El numero "<< z << " no es raiz del polinomio."<<endl<< 
                      "Introduce otro entero a comprobar: "<<endl;
            cin >> z;
            j = f;
            k = j*z+g;
            l = k*z+h;}
        if (l==0){cout <<endl << "El numero " << z << " es raiz del polinomio."<<endl<< 
                "Tomara la forma: [x + ("<<z<<")]"<<endl<< "Estos son los coeficientes 
                     del polinomio resultante: " << j << "," << k <<endl<<endl;}
        if (k==0&&l==0){ cout<<endl<< "La descomposicion en raices ha terminado."<<endl<< 
                        "Sus raices son: "<<x<<","<<y<<","<<z<<","<<0;}
        if (k!=0&&j!=0){cout <<"Ademas, "<<-k/j<< " tambien sera raiz del polinomio"<<
                        endl<<endl<< "Las raices del polinomio seran: "<<x<<","<<y<<","<<z
                        <<","<<-k/j<<endl<<endl<< "El polinomio tomara la forma: 
                   [x + ("<<x<<")]*[x + ("<<y<<")]*[x + ("<<z<<")]*[x + ("<<-k/j<<")]";}

return 0;
}
Esta entrada fue publicada en Informática e Internet. Guarda el enlace permanente.

2 respuestas a Regla de Ruffini

  1. Este programa parece que tiene numerosos errores. Impleméntalo en Code-Blocks para detectarlos y arreglarlos. Escribe aquí una versión correcta.

  2. Está comprobado, eran errores que no afectaban al funcionamiento del programa. Eliminé los vectores y sigue funcionando bien, es posible que lo pueda simplificar más ahora que conozco mejor el uso de bucles.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s