ayuda raíz de ecuación cuadrática mediante ruffini en C

Iniciado por nightcode, 30 Diciembre 2013, 23:49 PM

0 Miembros y 1 Visitante están viendo este tema.

nightcode

Buenas, esta vez estoy haciendo un ejercicio en C que saque las raices de una ecuación de segundo grado mediante el método de rufini. Aquí les dejo el codigo:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main ()
{
    int a, b, c;
    int i, j, r1, r2;
   
    printf("Ingrese los coeficientes de la ecuacion para mostrar sus raices");
    printf("\nIngrese el primer coeficiente: ");
    scanf("%d", &a);
    printf("\nIngrese el segundo coeficiente: ");
    scanf("%d", &b);
    printf("\nIngrese el tercer coeficiente: ");
    scanf("%d", &c);
   
    /*
     * El primer for que va ascenso
     * */
   
    for(i= 1 ; i==1 ; i++){
       /* Primera operacion
        * de la regla de rufini
        * */
            r1= i*a + b;
            b= r1;
            r1= b*i + c;
           
            if(r1 == 0){
            c= 0;
             r1= i;
                printf("\nLa primera raiz es: %d", r1);
                }
         /*
          * Segunda operación
          * de la regla de rufini.
          * */       
            r2= i * a;
            r2= r2 + b;
           
            if(r2 == 0){
            b= 0;
            r2= i;
            printf("\nLa segunda raiz es: %d", r2);
            }
         
      }

/*
* El segundo for que va en descenso
* */

     for(j= -1 ; j== -1 ; j--){
       /* Primera operacion
        * de la regla de rufini
        * */
            r1= j*a + b;
            b= r1;
            r1= b*j + c;
           
            if(r1 == 0){
            c= 0;
            r1= j;
                printf("\nLa primera raiz es: %d", r1);
                }
         /*
          * Segunda operación
          * de la regla de rufini.
          * */       
            r2= j*a;
            r2= r2 + b;
           
            if(r2 == 0){
            b= 0;
            r2= j;
            printf("\nLa segunda raiz es: %d", r2);
            }
            
      }
           
   
    return 0;
}

He estado casi obsesionado con hacerlo de esta manera y lo e modificado bastante. Lo que quiero hacer con los dos for es que vayan buscando números positivos y negativos hasta que consigan uno con el cual se cumplan las condiciones del if. El primer for va a buscar números positivos en orden ascendente, es decir que irá sumando de uno en uno e valor de la "i", a su vez cada valor de la "i" se irá multiplicando o sumando con los coeficientes que el usuario haya ingresado hasta que llegue al if, y si el resultado de la ultima suma es cero entonces quiere decir que el ultimo valor que tomó i es la primera raíz de la ecuación.

Si el primer for no encontró las raíces en numero positivos, entonces que pase al siguiente for y busque en los numero s negativos, es decir que en este for la j va en descenso. Este for solo buscará número negativos, es decir desde el -1 hacia la izquierda.

Bueno lo que sucede es que cuando compilo el programa e introduzco los coeficientes 1, 2 y 1 que corresponde a la ecuación: Ax^2 + Bx + C= 0 (A= 1, B= 2 y C= 1), entonces no me da ninguna raíz, como si los bucles no estuvieran trabajando. Cuando en realidad las raíces de esta ecuación son -1 y -1 sacandolas por el método de ruffini.
"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"

ivancea96

for(i= 1 ; i==1 ; i++)
Ahí estás diciendo que solo se haga el ciclo mientras i sea == a 1. Cuando el avlor de i cambie, el ciclo no se volverá a repetir.

nightcode

Cita de: ivancea96 en 31 Diciembre 2013, 00:32 AM
for(i= 1 ; i==1 ; i++)
Ahí estás diciendo que solo se haga el ciclo mientras i sea == a 1. Cuando el avlor de i cambie, el ciclo no se volverá a repetir.

ya lo cambie casi listo gracias :D
"Las organizaciones gastan millones de dólares en firewalls y dispositivos de seguridad, pero tiran el dinero porque ninguna de estas medidas cubre el eslabón más débil de la cadena de seguridad: la gente que usa y administra los ordenadores"