Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/03/2012, 20:31
drd222
 
Fecha de Ingreso: marzo-2012
Mensajes: 30
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Problema ecuacion cuadratica en c

Aunque aparentemente se puede usar switch para comparar valores booleanos y eh conseguido hacer un codigo casi funcional solamente que cuando la raiz me resulta negativa no vota los valores que deberia tal vez puedas ayudarme??? aca te pego el codigo:

#include <cstdio>
#include <cmath>

void leerCoeficientes(double &a,double &b,double &c)
{
printf("*****solucion de la ecuacion a*x^2+b*x+c=0 *****\n");
printf("Escriba el coeficiente a: ");
scanf("%lf",&a);
printf("Escriba el coeficiente b: ");
scanf("%lf",&b);
printf("Escriba el coeficiente c: ");
scanf("%lf",&c);
}
void cuadratica(double a, double b, double c, double &r1, double &r2, double &im)
{
double r;
int d;
d=b*b-4*a*c;
printf("Mostrar d= %d \n",d);
switch (true)
{
case 0:
r1= r2=-b/(2*a);
im=0;printf("mostrar im= %g \n",im);break;
case 1:
r=sqrt(d);
r1=(-b+r)/(2*a);
r2=(-b-r)/(2*a);
im=0;printf("mostrar im= %g \n",im);break;
default:
r1=r2=-b/(2*a);
im=sqrt(-d)/(2*a);
printf("mostrar im= %g \n",im);break;
}
}
void mostrar (double a, double b, double c, double r1, double r2, double im)
{
printf("Soluciones de: %gx^2+%gx+%g=o\n",a,b,c);
if (im)
printf("x1 = %.12g+%.12gi\nx2 = %.12g-%.12gi\n ",r1,im,r2,im);
else
printf("x1 = %.12g\nx2= %.12g\n",r1,r2);

}
int main()
{
double a,b,c,r1,r2,im;
leerCoeficientes(a,b,c);
cuadratica(a,b,c,r1,r2,im);
mostrar(a,b,c,r1,r2,im);
return 0;
}