Hi everybody. I made this code for quadratic formula but it's not working as it should. I am learning "C language" so it's very simple code.

Important:It is working efficiently for "real and equal" and "real and equal" roots. But for "complex roots" it's not true for every value of a, b, c.

Example:for a=1,b=2,c=3; it prints "The first root = -1 + 1.414214 i"

and "The second root = -1 - 1.414214 i", which is accurate result.

But for a=2,b=3,c=4; it prints correct answer for imaginary part but "0.0000" for both the real parts and wrong results for other values. Please help

Note:Please don't post brand new code in reply, because I don't have full command on C language. Just make change where needed in my code and reply this post.

Regards: arslan20

Code:#include<stdio.h> #include<conio.h> #include<math.h> main() { int a,b,c,d; float x1,x2; printf("Enter value of a : "); scanf("%d",&a); printf("Enter value of b : "); scanf("%d",&b); printf("Enter value of c : "); scanf("%d",&c); d = pow(b,2) - 4 * a *c; if(d==0) { printf("\nThe roots are real and equal"); x1 = -b/(2*a); printf("\nThe first root = %f",x1); printf("\nThe second root = %f",x1); } else if(d>0) { printf("\nThe roots are real and unequal"); x1 = (-b+sqrt(d))/(2*a); x2 = (-b-sqrt(d))/(2*a); printf("\nThe first root = %f",x1); printf("\nThe second root = %f",x2); } else { printf("\nThe roots are complex"); d = -d; x1 = -b/(2*a); x2 = sqrt(d)/(2*a); printf("\nThe first root = %f + %f i",x1,x2); printf("\nThe second root = %f - %f i",x1,x2); } getch(); }