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.
#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.