Today we will learn C program for Quadratic Equation and also learn how to find the roots of a quadratic equation. So before starting you should have knowledge about the quadratic equation. So,

What is Quadratic Equation?

A Quadratic Equation is any time of the equation that can be rearranged in the standard form as ax^2+bx+c=0. Where, x is the unknown variable and the a,b,c are the known numbers where a!=0.

If a=0 then the equation is said to be linear and not a quadratic equation as there is no ax^2.

The numbers a,b and c are the coefficients of the equation and can be called as quadratic coefficients.

Understanding Quadratic Equation:

The Expression under the square root sign is called as discriminant of the quadratic equation and can be represented as:

roots of quadratic equation

The Quadratic equation can have either one or two distinct real roots. In this case, the Discriminant determines the nature of the roots whether it is positive, negative or zero. There are three Cases to determine,

1st Case: If the Discriminant is +ve then there are exactly two distinct roots both are real numbers.

roots of quadratic equation

2nd Case: If the Discriminant is -ve then there are no real roots but there exists two distinct non-real roots which are complex.

c program for quadratic equation

3rd Case:

If the Discriminant is 0, then there exists one real root also called as double root i.e

c program for quadratic equation

Quadratic Equation Algorithm

1 Step: Input the coefficients of the quadratic equation from the user and store in the variables a,b and c.

2 Step: Now find the Discriminant of the equation by using formula Discriminant=(b*b)-(4*a*c).

3 Step: Now compute their roots based on the nature of Discriminants.

4 Step: If discriminant>0 then, 1st root=(-b + sqrt(Discriminant)) / 2*a and 2nd root=(-b – sqrt(Discriminant)) / 2*a

5 Step: If the Discriminant==0 then 1st root=2nd root= -b/2*a. and if Discriminant is -ve then there are two distinct non-real complex roots where 1st root=-b/2*a and 2nd root=b/2*a.

Imaginary roots are given by imagine=sqrt(-Discriminant)/2*a

C Program for Quadratic Equation Using if else

In this program the compiler asks the user to enter the value of coefficients a,b and c then the program finds the roots of the quadratic equation.

#include <stdio.h>
#include<math.h>
int main()
{
	float a, b, c;
	float root1, root2, imaginary, discriminant;
	printf("\n Please Enter values of a, b, c of Quadratic Equation :\n  ");
  	scanf("\n%f\n%f\n%f", &a, &b, &c);
  	discriminant = (b * b) - (4 * a *c);
  	if(discriminant > 0)
  	{
  		root1 = (-b + sqrt(discriminant) / (2 * a));
  		root2 = (-b - sqrt(discriminant) / (2 * a));
		printf("\n Two Distinct Real Roots Exists: \nroot1 = %.2f and\n root2 = %.2f", root1, root2);
  	}
  	else if(discriminant == 0)
  	{
  		root1 = root2 = -b / (2 * a);
  		printf("\n Two Equal and Real Roots Exists:\n root1 = %.2f and \nroot2 = %.2f", root1, root2);
  	}
  	else if(discriminant < 0)
  	{
  		root1 = root2 = -b / (2 * a);
  		imaginary = sqrt(-discriminant) / (2 * a);
  		printf("\n Two Distinct Complex Roots Exists:\n root1 = %.2f+%.2f and \nroot2 = %.2f-%.2f", root1, imaginary, root2, imaginary);
  	}
  	return 0;
}

Output:

quadratic equation

Explanation:

The user has entered the values of a=5,b=10 and c=-25.

So, the Discriminant=(b*b)-(4*a*c) / 2*a i.e (10*10)-(4*5*-25) / 2*5 so Discriminant=(100)-(-500)/10 = 5000.

1st root=-b+sqrt(Discriminant)/2*a i.e -10+sqrt(5000)/10 so the value of 1st root=-7.5

2st root=-b-sqrt(Discriminant)/2*a i.e -10-sqrt(5000)/10 so the value of 1st root=-12.45.

2. Quadratic Equation using Switch Case

#include <stdio.h>
#include<math.h>
int main()
{
	float a, b, c;
	float root1, root2, imaginary, discriminant;
	printf("\n Please Enter values of a, b, c of Quadratic Equation : \n ");
  	scanf("%f%f%f", &a, &b, &c);
  	discriminant = (b * b) - (4 * a *c);
  	switch(discriminant > 0)
  	{
  		case 1:
  			root1 = (-b + sqrt(discriminant) / (2 * a));
  			root2 = (-b - sqrt(discriminant) / (2 * a));
			printf("\n Two Distinct Real Roots Exists:\n root1 = %.2f and \nroot2 = %.2f", root1, root2);
			break;
		case 0:
			switch(discriminant < 0)
			{
				case 1: //True
					root1 = root2 = -b / (2 * a);
					imaginary = sqrt(-discriminant) / (2 * a);
					printf("\n Two Distinct Complex Roots Exists: \nroot1 = %.2f+%.2f and\n root2 = %.2f-%.2f", root1, imaginary, root2, imaginary);
					break;
				case 0: // False (Discriminant = 0)
					root1 = root2 = -b / (2 * a);
					printf("\n Two Equal and Real Roots Exists:\n root1 = %.2f and \nroot2 = %.2f", root1, root2);
					break;
			}
  	}
  	return 0;
}

Output:

using switch statement

3. Finding roots using Equation

In this program the compiler will ask user to type the equation in the form of ax^2+bx+c and then the compiler will print the roots of the quadratic equation.

#include<stdio.h>
#include<math.h>
int main(){
  float a,b,c;
  float d,root1,root2;  
  printf("Enter quadratic equation in the format ax^2+bx+c: \n");
  scanf("%fx^2%fx%f",&a,&b,&c);
  d = b * b - 4 * a * c;
  if(d < 0){
    printf("Roots are complex number.\n");
    return 0;
  }
   root1 = ( -b + sqrt(d)) / (2* a);
   root2 = ( -b - sqrt(d)) / (2* a);
   printf("Roots of quadratic equation are:\n %.3f ,\n %.3f",root1,root2);
  return 0;
}

Output:

using if else

Also Read: