# C program to find all roots of a quadratic equation using switch case

```#include<stdio.h>
#include<math.h>     /* Used for sqrt() */

int main()
{
float a, b, c;
float root1, root2, imaginary;
float discriminant;

printf("Enter values of a, b, c of quadratic equation (ax^2 + bx + c): ");
scanf("%f%f%f", &a, &b, &c);

/* Calculate discriminant */
discriminant = (b * b) - (4 * a * c);

/* Compute roots of quadratic equation based on the nature of discriminant */
switch(discriminant > 0)
{
case 1:
/* If discriminant is positive */
root1 = (-b + sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("Two distinct and real roots: %.2f and %.2f", root1, root2);
break;

case 0:
/* If discriminant is not positive */
switch(discriminant < 0)
{
case 1:
/* If discriminant is negative */
root1 = root2 = -b / (2 * a);
imaginary = sqrt(-discriminant) / (2 * a);

printf("Two distinct complex roots exists: %.2f + i%.2f and %.2f - i%.2f", root1, imaginary, root2, imaginary);
break;

case 0:
/* If discriminant is zero */
root1 = root2 = -b / (2 * a);

printf("Two equal and real roots exists: %.2f and %.2f", root1, root2);

break;
}
}

return 0;
}```

Output

```Enter values of a, b, c of quadratic equation (ax^2 + bx + c): 5 -2 -3
Two distinct and real roots: 1.00 and -0.60```