50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
|
/*
|
||
|
* C program to find out the roots of a quadratic equation
|
||
|
* for non-zero coefficients. In case of errors the program
|
||
|
* should report suitable error message.
|
||
|
*/
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <math.h>
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
float a, b, c, root1, root2;
|
||
|
float realp, imagp, disc;
|
||
|
printf("Enter the values of a, b and c \n");
|
||
|
scanf("%f %f %f", &a, &b, &c);
|
||
|
/* If a = 0, it is not a quadratic equation */
|
||
|
if (a == 0 || b == 0 || c == 0)
|
||
|
{
|
||
|
printf("Error: Roots cannot be determined \n");
|
||
|
exit(1);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
disc = b * b - 4.0 * a * c;
|
||
|
if (disc < 0)
|
||
|
{
|
||
|
printf("Imaginary Roots\n");
|
||
|
realp = -b / (2.0 * a) ;
|
||
|
imagp = sqrt(abs(disc)) / (2.0 * a);
|
||
|
printf("Root1 = %f +i %f\n", realp, imagp);
|
||
|
printf("Root2 = %f -i %f\n", realp, imagp);
|
||
|
}
|
||
|
else if (disc == 0)
|
||
|
{
|
||
|
printf("Roots are real and equal\n");
|
||
|
root1 = -b / (2.0 * a);
|
||
|
root2 = root1;
|
||
|
printf("Root1 = %f\n", root1);
|
||
|
printf("Root2 = %f\n", root2);
|
||
|
}
|
||
|
else if (disc > 0 )
|
||
|
{
|
||
|
printf("Roots are real and distinct \n");
|
||
|
root1 =(-b + sqrt(disc)) / (2.0 * a);
|
||
|
root2 =(-b - sqrt(disc)) / (2.0 * a);
|
||
|
printf("Root1 = %f \n", root1);
|
||
|
printf("Root2 = %f \n", root2);
|
||
|
}
|
||
|
}
|
||
|
}
|