Επίλυση δευτεροβάθμιας εξίσωσης στη 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;
}

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

Σχετικοί εξωτερικοί σύνδεσμοι

Αναζήτηση στο google.com για παρόμοια θέματα

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

Αν επιθυμείτε μπορείτε να κάνετε μια δωρεά στον ιστότοπο