Hola a todos.
Veréis estoy empezando a trabajar con números complejos y a emplear en general las funciones de math.h y complex.h, y para practicar me pareció una buena idea ,por ejemplo, realizar un programa que resolviera ecuaciones de 2ºgrado.
Mi codigo es el siguiente;
Para resultados comunes no experimento ningún problema, pero cuando los coeficientes me dan un numero complejo, el resultado invariablemente me da 0.00000.
Seguramente no sean correctas las funciones implementadas dentro del;
¿Me podeis echar una mano?
Muchas gracias.
Veréis estoy empezando a trabajar con números complejos y a emplear en general las funciones de math.h y complex.h, y para practicar me pareció una buena idea ,por ejemplo, realizar un programa que resolviera ecuaciones de 2ºgrado.
Mi codigo es el siguiente;
Código [Seleccionar]
#include<stdio.h>
#include<complex.h>
#include<math.h>
void grado (float,float,float);
main()
{
float a,b,c;
printf ("Introduzca los coeficientes de la ecuacion en el formato (a,b,c)\n\n");
scanf ("%f,%f,%f",&a,&b,&c);
grado (a,b,c);
return 0;
}
void grado (float a,float b,float c)
{
if (a==0)
{
printf ("No se puede dividir por a=0");
}
else
{
float res1,res2;
res1 = (-b+(sqrt(pow(b,2)-4*a*c)))/(2*a);
res2 = (-b-(sqrt(pow(b,2)-4*a*c)))/(2*a);
if (pow(b,2)-4*a*c<0)
{
double _Complex resimag1 = res1;
double _Complex resimag2 = res2;
printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",resimag1,resimag2);
}
else
{
printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",res1,res2);
}
}
return;
}
Para resultados comunes no experimento ningún problema, pero cuando los coeficientes me dan un numero complejo, el resultado invariablemente me da 0.00000.
Seguramente no sean correctas las funciones implementadas dentro del;
Código [Seleccionar]
if (pow(b,2)-4*a*c<0) \\Numeros complejos
{
double _Complex resimag1 = res1;
double _Complex resimag2 = res2;
printf ("\nEl primer resultado es %f \n El segundo resultado es %f \n",resimag1,resimag2);
¿Me podeis echar una mano?
Muchas gracias.