 # C Program to find roots of a quadratic equation

A Quadratic equation in algebra can be defined as any equation that can be written in the format ax^2+bx+c=0. For a better understanding of this finding Quadratic equation roots C program example, we always recommend you to learn the basic topics of C programming listed below:

## What is a quadratic equation?

In algebra, a quadratic equation is an equation that can be rearranged in the form 'ax^2+bx+c=0 ', where 'x' represents an unknown quantity, and 'a', 'b', and 'c' are numbers that are not equal to 0. If 'a = 0', then it is not a quadratic equation, it's called a linear equation. The numbers 'a', 'b', and 'c' are the coefficients of the equation and 'x' is the unknown value in the equation that has to find out. In this C program, we need to solve the quadratic equation and find its roots of it.

## How to find the roots of a quadratic equation

C program to find all the roots of a quadratic equation for non-zero coefficients is a little lengthy program, but it is very simple if you know the logic behind the program. We are using the formula "disc = b*b - 4.0*a*c after finding the "disc" we can check the roots are real or imaginary depending on if the value of the disc is greater than or less than zero.

Note: Checking the quadratic equation, if 'a=0' then it is not a quadratic equation. Now check 'A' or 'B' or 'C' is zero. If so we cannot determine roots. Else apply the formula "b*b - 4*a*c". Finally, the check result is greater than or less than zero or zero itself.

• If the disc is less than zero then the real roots can be found out by using the equation "B/(2.0*A)". and the imaginary root will find out by "sqrt(abs(disc))/(2.0*A)".
• If the disc is zero then the roots are the same which can be found out by "-B/(2.0*A)".
• If the disc is greater than zero then the roots will be (-B+sqrt(disc))/(2.0*A) and (-B-sqrt(disc))/(2.0*A).

## ALGORITHM

STEP 1: Import the needed header libraries to the C program to use the needed built-in functions.

STEP 2: Accept the values for A and B and C using `printf` and `scanf` built-in functions.

STEP 3: Check if the value of A is not equal to zero. if so it's not a quadratic equation.

STEP 4: Use '`else`' to check the value of the 'disc' using the formula 'B*B - 4.0*A*C'.

STEP 5: If the disc is less than zero then it will be imaginary roots.

STEP 6: Find out the roots real and imaginary using the formula and print the roots using `printf`.

STEP 7: Use an '`else if`' statement to check the disc is equal to zero and then the roots will be equal and real.

STEP 8: Calculate the roots using a formula and print the roots using a print statement.

STEP 9: Use the '`else if`' to check the disc is greater than zero. if so print the roots as real and distinct.

STEP 10: Calculate both roots using a specific formula and print the result using a `printf`  built-in function in C programming.

## C Source Code

```                                          ```#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);
}
}
}```
```

## OUTPUT

```RUN 1

Enter the values of A, B and C
3 2 1
Imaginary Roots
Root1 = -0.333333  +i 0.471405
Root2 = -0.333333  -i 0.471405

RUN 2

Enter the values of A, B and C
1 2 1
Roots are real and equal
Root1 = -1.000000
Root2 = -1.000000

RUN 3

Enter the values of A, B and C
3 5 2
Roots are real and distinct
Root1 = -0.666667
Root2 = -1.000000```
VIEW ALL
VIEW ALL
VIEW ALL