Hola buenas, me mandaron escribir un programita que calculara las ecuaciones de segundo grado y todo bien, pero cuando salen raices complejas que carajo que no las calcula me cawen to, que hay que asel pa resolvel este drama carajo. Pongo código:
· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex
Código (c) [Seleccionar]
/**Escribe un programa que pida los coeficientes de una ecuación de segundo grado (a · x^
2 + b · x + c =0) y escriba la solución. Recuerda que una ecuación de segundo grado puede
tener dos soluciones reales diferentes, una única solución real, o dos soluciones complejas
conjugadas.*/
#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(){
float coefa, coefb, coefc, sol1, sol2, discri;
/** coefa -> a
coefb -> b
coefc -> c
sol1 -> primera solución de la ecuación
sol2 -> segunda solución de la ecuación
discri -> discrimante, que es igual a b^2 menos 4ac */
printf("\nBienvenido a la calculadora de raices cuadradas\n");
//Bloque término al cuadrado
printf("\nIntroduzca el coeficiente que acompaña al termino que esta al cuadrado: \n");
scanf("%f",&coefa);
printf("\n\nEl coeficiente que acompaña al termino al cuadrado es: %.4f\n\n",coefa);
//Bloque término de grado uno
printf("\nIntroduzca el coeficiente que acompaña al termino de primer grado: \n");
scanf("%f",&coefb);
printf("\n\nEl coeficiente que acompaña al termino de primer grado es: %.4f\n\n",coefb);
//Bloque término independiente
printf("Introduzca el coeficiente correspondiente al termino independiente: \n");
scanf("%f",&coefc);
printf("\n\nEl coeficiente que acompaña al termino independiente es: %.4f\n\n",coefc);
//Definimos qué es el discriminante
discri = pow(coefb,2) - 4 * coefa * coefc;
/** Introducimos los condicionales pues vamos a tener tres casos posibles:
1. Que el discriminante sea mayor que cero, entonces habra dos soluciones reales
y distintas.
2. Que el discriminante sea cero, entonces habrá dos soluciones reales iguales.
3. Que el discrimante sea menor que cero, entonces habrá dos soluciones complejas.
*/
if (discri > 0) //CASO 1
{
sol1 = (-coefb + sqrt(discri) ) / 2 * coefa;
sol2 = (-coefb - sqrt(discri) ) / 2 * coefa;
printf("\n\nLa solucion son dos raices reales %.4f y %.4f \n\n",sol1,sol2);
}
if (discri == 0) //CASO 2
{
sol1 = (-coefb + sqrt(discri) ) / 2 * coefa;
sol1 = sol2;
printf("\n\nLa solucion son dos raices reales iguales %f y %f \n\n",sol1,sol2);
}
if ( discri < 0) //CASO 3.
{
sol1 = (-coefb + csqrt(discri) ) / 2 * coefa;
sol2 = (-coefb - csqrt(discri) ) / 2 * coefa;
printf("\n\nLa solucion son dos raices complejos %f , %f \n\n",sol1,sol2);
}
//FALTA SABER COMO OPERAR NUMEROS COMPLEJOS
return 0;
}
· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex