Επίλυση δευτεροβάθμιας εξίσωσης στη C++ (εμφώλευση if)

Επίλυση της εξίσωσης δευτέρου βαθμού:

$$ a x^2 + b x + c = 0 $$

με πραγματικούς συντελεστές και αναζήτηση πραγματικών ριζών.

 
#include <iostream>
#include <math.h>


using namespace std;

int main ()
{
    double a, b, c;
    double d, x1, x2;

    cout << "Λύνω την εξίσωση ax^2 + bx + c = 0" << endl;
    cout << "Δώσε το a:  ";
    cin >> a;
    cout << "Δώσε το b:  ";
    cin >> b;
    cout << "Δώσε το c:  ";
    cin >> c;
 
    if (a == 0)
    {
        if (b == 0)
        {
            if (c == 0)
            {
                cout << "Αόριστη εξίσωση" << endl;
            }
            else
            {
                cout << "Αδύνατη πρωτοβάθμια εξίσωση" << endl;
            }
        }
        else
        {
            x1 = -c/b;
            cout << "Μία ρίζα (πρωτοβάθμια): " << "x= " << x1 << endl;
        }       
    }
    else
    {
        d = b*b - 4*a*c;
        if (d > 0)
        {
            x1 = (-b+sqrt(d)) / (2*a);
            x2 = (-b-sqrt(d)) / (2*a);
            cout << "Βρήκα δύο πραγματικές ρίζες: " << "x1= " << x1 << "   x2= " << x2<< endl;
        }
        else if (d == 0)
        {
            x1 = -b / (2*a);
            cout << "Βρήκα μια διπλή ρίζα: " << "x= " << x1 << endl;
        }
        else
        {
            cout << "Με αρνητική διακρίνουσα δεν υπάρχουν πραγματικές ρίζες " << endl;
        }
    }

    return 0;
}

Συνδεθείτε για περισσότερες δυνατότητες αλληλεπίδρασης,
σχολιασμοί, εξωτερικοί σύνδεσμοι, βοήθεια, ψηφοφορίες, αρχεία, κτλ.

Creative Commons License
Εκπαιδευτικό υλικό από τον Αθανάσιο Σταυρακούδη σας παρέχετε κάτω από την άδεια Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License.
Σας παρακαλώ να ενημερωθείτε για κάποιους επιπλέον περιορισμούς
http://stavrakoudis.econ.uoi.gr/stavrakoudis/?iid=401.