Write a C++ program that calculates and displays all roots of a given quadratic equation. The roots may be real or complex depending on the discriminant value.
Input and Output Examples
-
Input: Coefficients: a = 1, b =−3, c =2
Output: Roots are 2 and 1.
-
Input: Coefficients: a = 1, b = 2, c = 5
Output: Roots are -1+i2 and -1-i2.
Algorithm to find the roots of a Quadratic Equation
- Prompt the user to input the coefficients a, b, and c.
- Calculate the discriminant D=b^2−4ac.
- Based on the discriminant:
- If D>0, compute two distinct real roots.
- If D=0, compute one real root (repeated).
- If D<0, compute two complex roots.
- Display the roots.
Below is the C++ code to find all roots of a quadratic equation
#include <iostream>
#include <cmath> // Include the cmath library for sqrt() function
using namespace std;
int main() {
double a, b, c, discriminant, root1, root2, realPart, imagPart;
// Step 1: Input coefficients a, b, and c
cout << "Enter coefficients a, b and c: ";
cin >> a >> b >> c;
// Step 2: Calculate the discriminant
discriminant = b*b - 4*a*c;
// Step 3: Compute roots based on the discriminant
if (discriminant > 0) {
// Two distinct real roots
root1 = (-b + sqrt(discriminant)) / (2*a);
root2 = (-b - sqrt(discriminant)) / (2*a);
cout << "Roots are " << root1 << " and " << root2 << ".";
} else if (discriminant == 0) {
// One real root (repeated)
root1 = root2 = -b / (2*a);
cout << "Root is " << root1 << ".";
} else {
// Two complex roots
realPart = -b / (2*a);
imagPart = sqrt(-discriminant) / (2*a);
cout << "Roots are " << realPart << "+i" << imagPart << " and " << realPart << "-i" << imagPart << ".";
}
return 0;
}
Variations with Different Input Values
This program is equipped to handle all possible scenarios for the roots of a quadratic equation. Here are additional examples with diverse inputs:
- Input: Coefficients a=1,b=−2,c=1 Output: Root is 1.
- Input: Coefficients a=1,b=0,c=1 Output: Roots are 0+i1 and 0-i1.