#include <iostream>
#include <cmath>

using namespace std;

float calDiscriminant(float, float, float);
void More0(float, float, float);
void Equal0(float, float, float);
void Less0(float, float, float);

int main(void) 
{
    float a, b, c, discriminant;
    
	cout << "Enter coefficients a: ";
    cin >> a ;
    cout << "Enter coefficients b: ";
    cin >> b ;
    cout << "Enter coefficients c: ";
    cin >> c ;
    
    discriminant=calDiscriminant(a,b,c);
    
    if (discriminant > 0) 
	{
        More0(discriminant, a,b);
    }
    
    else if (discriminant == 0) 
	{
        Equal0(discriminant, a, b);
    }

    else 
	{
        Less0(discriminant, a, b);
    }
}
void More0(float k, float l, float m)
{
	float root1, root2;
	root1 = (-m + sqrt(k)) / (2*l);
    root2 = (-m - sqrt(k)) / (2*l);
    cout << "Roots : real and different." << endl;
    cout << "\nroot 1 = " << root1 ;
    cout << "\nroot 2 = " << root2 ;
}
void Equal0(float k, float l, float m)
{
	float root1; 
	cout << "Roots : real and same." << endl;
    root1 = (-m + sqrt(k)) / (2*l);
    cout << "root 1 = root 2 =" << root1;
}
void Less0(float k, float l, float m)
{
	float real, imaginary;
	real = -m/(2*l);
    imaginary = sqrt(-k)/(2*l);
    cout << "Roots : complex and different."  << endl;
    cout << "root 1 = " << real << "+" << imaginary << "i" << endl;
    cout << "root 2 = " << real << "-" << imaginary << "i" << endl;
}
float calDiscriminant(float x, float y, float z)
{
	float result;
	
	result = pow(y,y) - 4*x*z;
	
	return result;
}
