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

Previous Program Next Program

Write a C program to find all roots of a Quadratic equation using switch case. How to find all roots of a quadratic equation using switch case in C programming. Finding all roots of a quadratic equation using switch case. Logic to calculate roots of quadratic equation in C program.

Example

Input

Input a: 4
Input b: -2
Input c: -10

Output

Root1: 1.85
Root2: -1.35

Required knowledge

Basic C programming, Switch case, Basic Mathematics

Logic to find roots of quadratic equation

We are already aware of quadratic equation, as I already explained in one of my previous post.

Let us do a quick recap of definitions and formulas.

Quadratic equation

In elementary algebra a quadratic equation is an equation in the form of
Quadratic equation = ax^2 + bx + c = 0

Solving quadratic equation

A quadratic equation can have either one or two distinct real or complex roots depending upon nature of discriminant of the equation. Where discriminant of the quadratic equation is given by

Discriminant formula = b^2 - 4ac

Depending upon the nature of the discriminant, formula for finding roots can be given as:

  • Case 1: If discriminant is positive. Then there are two real distinct roots given by:
    Real distinct roots of quadratic equation
  • Case 2: If discriminant is zero. Then it have exactly one real root given by:
    Single real root of quadratic equation
  • Case 3: If discriminant is negative. Then it will have two distinct complex roots given by:
    Distinct complex roots of quadratic equation

Below is the step by step descriptive logic to find roots of quadratic equation using switch case.

  1. Read three input from user. Store it in some variable say a, b and c.
  2. Find the discriminant of given equation. Use the above formula i.e. discriminant = (b*b) - (4*a*c).
  3. Compute the roots based on the nature of discriminant.
  4. Switch the value of discriminant > 0. Now here is the real game.

    discriminant > 0 will return either true or false. In C it will return some positive integer (for true generally returns 1) or zero (for false). Hence for this switch there must only be two cases - one for true (1) other for false (0).

  5. For case 1 means discriminant is positive. Apply the formula to compute root1 and root2.
  6. For case 0 which is the false case. There exists two more case. Which is if the discriminant is not positive then it is either be negative or zero. Hence, inside case 0 switch the expression discriminant < 0. This switch can be called as nested switch.
  7. For the above switch there again will be two cases. Which is case 1 and case 0. Case 1 means discriminant is negative. Whereas case 0 means discriminant is zero.
  8. Apply the formula to compute roots again for both the inner cases.

Let us now code the solution for the program.

Program to find roots of quadratic equation using switch case

/**
 * 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);

    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 exists: %.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): 4 -2 -10
Two distinct and real roots exists: 1.85 and -1.35

Happy coding ;)

You may also like

Previous Program Next Program
Any doubt or suggestion write here. I will try my best to help. Before posting your code you must escape it to view. To format your source code and use format highlighting, post your source code inside
< pre>< code >----Your Source Code---- < / code > < / pre > (Remove spaces from pre and code tags)

No comments:

Post a Comment