Miałem napisać prosty program który wylicza pierwiastki z równania kwadratowego. Napisałem taki kod:
#include<stdio.h>
#include<stdlib.h>
int rkwad(double a, double b, double c,double *x1, double *x2)
{
double Delta;
if(a==0){
return(-1);
}
Delta=b*b-4.0*a*c;
if(Delta<0)
return(0);
else
if(Delta==0)
{
*x1=((-b)/2.0*a);
*x2=*x1;
return(1);
}
else
if(Delta>0){
*x1=((-b)-sqrt(Delta))/(2.0*a);
*x2=((-b)+sqrt(Delta))/(2.0*a);
return(2);
}
}
int main()
{
double a,b,c;
double *d,*e;
printf("Podaj a, b, c: \n");
scanf("%lf %lf %lf",&a,&b,&c);
printf("\n");
if(rkwad(a,b,c,d,e)==-1){
printf("a nie moze sie rownac 0!\n");
}
else
if(rkwad(a,b,c,d,e)==0){
printf("Delta jest mniejsza od zera. Rownanie nie ma rozwiazan.\n");
}
else
if(rkwad(a,b,c,d,e)==1){
printf("Delta rowna 0. Rownanie ma takie rozwiazanie: x1=%lf i x2=%lf\n",d,e);
}
else
if(rkwad(a,b,c,d,e)==2){
printf("Delta wieksza od zera. Rownanie ma takie rozwiazania: x1=%lf i x2=%lf",d,e);
}
system("PAUSE");
return 0;
}
Ale niestety od warunku gdy delta jest równa zero program zawiesza się. W którym momencie zrobiłem błąd?