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

int sgn(double x) {
    if (x < 0)
        return -1;
    else if (x == 0)
        return 0;
    else
        return 1;
}

int main()
{
    system("chcp 1250");

    cout << "Rozwi¹zywanie równania kwadratowego ax^2+bx+c = 0\n";
    cout << "o wspó³czynnikac rzeczywistych w zbiorze liczb zespolonych.\n";
    cout << "Podaj wspó³czynniki równania:\n";
    double a, b, c;
    cout << "a = "; cin >> a;
    cout << "b = "; cin >> b;
    cout << "c = "; cin >> c;
    if (a != 0) {
        double delta = b*b-4*a*c;
        switch (sgn(delta)) {
            case 1: {
                double x1 = (-b-sqrt(delta))/(2*a);
                double x2 = (-b+sqrt(delta))/(2*a);
                cout << "Równanie ma dwa pierwiastki rzeczywiste:\n";
                cout << "x = " << x1 << endl << "x = " << x2 << endl;
                break;
            }
            case 0: {
                double x1 = -b/(2*a);
                cout << "Równanie ma pierwiastek rzeczywisty dwukrotny: ";
                cout << "x = " << x1 << endl;
                break;
            }
            case -1: {
                double re = -b/(2*a);
                double im = fabs(sqrt(-delta)/(2*a));
                cout << "Równanie ma dwa pierwiastki zespolone:\n";
                cout << "x = " << re <<" - " << im << "i\n";
                cout << "x = " << re <<" + " << im << "i\n";
                break;
            }
        }
    } else
        cout << "a = 0, równanie nie jest równaniem kwadratowym.\n";
    system("pause");
    return 0;
}