Estoy tratando de hacer un programa que me resuelva ecuaciones cuadraticas de la forma a(x*x)+bx+c=0; tengo lo siguiente:
#include <stdio.h> //printf(); scanf();
#include <conio.h> //clrscr(); gotoxy(); cprintf(); getch();
#include <math.h> //abs(); sqrt();
void main(void)
{
//declaracion de variables
int d=1; //signo de b
float a,b,c; //datos de la ecuacion: a(x*x)-bx+c=0
float band=0; //bandera (si el resultado de la raiz es negativo)
float res_raiz; //resultado de la raiz
float x1,x2,x3,x4; //incognitas a encontrar
float raiz_cuad; //(b*b)-4ac
clrscr();
gotoxy(10,2);printf("introduzca el valor de a: ");
scanf("%f",&a);
gotoxy(10,3);printf("introduzca el valor de b: ");
scanf("%f",&b);
gotoxy(10,4);printf("introduzca el valor de c: ");
scanf("%f",&c);
if (b<0) //si b<0...
{
d=-1; //...entonces en el signo de b es negativo
}
raiz_cuad=(b*b)-(4*(a*c));
if (raiz_cuad<0) //si el resultado de (b*b)-4ac es < 0...
{
raiz_cuad=abs(raiz_cuad); //valor absoluto de (b*b)-4ac
band=1; //...entonces bandera = 1 "(b*b)-4ac es negativo"
}
res_raiz=sqrt(raiz_cuad);
x1=((-b)+res_raiz)/(2*a);
x2=((-b)-res_raiz)/(2*a);
x3=d*(-1*((abs(b)+(res_raiz))/(2*a)));
x4=c/(a*x3);
gotoxy(10,10);printf("el resultado de x1 es:%.4f",x1);
gotoxy(10,12);printf("el resultado de x2 es:%.4f",x2);
gotoxy(10,16);printf("el resultado de x3 es:%.4f",x3);
gotoxy(10,18);printf("el resultado de x4 es:%.4f",x4);
if (band==1) //si bandera = 1
{
gotoxy(10,14);printf("el resultado de la raiz es negativo");
}
getch();
}
A este programa, si le meto valores muy grandes o muy pequeños, por ejemplo: 1e130 (uno por 10 a la 130) me saca del programa sin imprimir algo en pantalla. ¿como le hago para el programa me reconozca este tipo de cantidades (1e130)?