Q:

Find the roots of quadratic equation in C++

belongs to collection: C++ programs on various topics

0

Find the roots of quadratic equation in C++

All Answers

need an explanation for this answer? contact us directly to get an explanation for this answer

Algorithm:

  1. Create a class roots with coefficients ab and c and roots r1 and r2 as data members and getdata()determinant() and checkdeterminant() as member functions.
  2. getdata() takes input from user and initialize the data members abc and define determinant() so that it can compute (b*b)-(4*a*c). If the determinant is 0 then the roots must be equal so assign them the value –b/2a and print the result. If the determinant is positive then roots must be distinct and real so calculate two roots -b+sqrt(d)/2a and -b-sqrt(d)/2a and print the result. If the determinant is negative then roots must be imaginary so calculate real and virtual part –b/2a and sqrt(-d)/2a and print result.
  3. Create an object r of class roots.
  4. Input the coefficients using the getdata().
  5. Compute determinant using determinant().
  6. Check determinant and print the roots using checkdeterminant().

C++ code to find the roots of quadratic equation

#include <iostream>
#include <cmath>
using namespace std;

//class
class roots {
	int a, b, c;
	float r1, r2;
	public:
		void getdata();
		int determinant();
		void checkdeterminant(int);
};

void roots::getdata() {
	cout << "Enter value of coefficient of x^2: ";
	cin >> a;
	cout << "Enter value of coefficient of x: ";
	cin >> b;
	cout << "Enter value of coefficient of 1: ";
	cin >> c;
}

int roots::determinant() {
	int d = b * b;
	d -= (4 * a * c);
	return d;
}

void roots::checkdeterminant(int d) {
	if (d == 0) {
		cout << "Real and equal roots\n";
		r1 = (-1 * b);
		r1 /= (2 * a);
		r2 = r1;
		cout << "Roots : " << r1 << " and " << r2 << endl;
	}
	else if (d > 0) {
		cout << "Real and distinct roots\n";
		r1 = (-1 * b) + sqrt(d);
		r1 /= (2 * a);
		r2 = (-1 * b) - sqrt(d);
		r2 /= (2 * a);
		cout << "Roots : " << r1 << " and " << r2 << endl;
	}
	else {
		cout << "Imaginary roots" << endl << endl;
		r1 = (-b)/(2*a);
		r2 = (sqrt(-d))/(2*a);
		cout << "Roots : " << r1 << " + i" << r2 ;
		cout << " and " << r1 << " - i" << r2 << endl<<endl;
	}
}

int main() {
	roots r;
	
	r.getdata();
	
	cout << endl;
	int d = r.determinant();
	r.checkdeterminant(d);
	cout << endl;
	
	return 0;
}

Output

 
First run:
Enter value of coefficient of x^2: 1
Enter value of coefficient of x: 4
Enter value of coefficient of 1: 4

Real and equal roots
Roots : -2 and -2

Second run:
Enter value of coefficient of x^2: 1
Enter value of coefficient of x: -5
Enter value of coefficient of 1: 6

Real and distinct roots
Roots : 3 and 2

Third run:
Enter value of coefficient of x^2: 1
Enter value of coefficient of x: 3
Enter value of coefficient of 1: 4

Imaginary roots
Roots : -1 + i1.65831 and -1 - i1.65831

need an explanation for this answer? contact us directly to get an explanation for this answer

total answers (1)

C++ programs on various topics

This question belongs to these collections

Similar questions


need a help?


find thousands of online teachers now
C++ program to find Sum of cubes of first N Even n... >>
<< Sum of all the elements in an array divisible by a...