p-q Formel und Ausgabe Nannan



  • Servus,
    habe seit kurzem angefangen mich in C++ reinzuarbeiten und stehe vor der Aufgabe ein Programm zu schreiben , welches p-q Formeln löst.
    Das Programm sieht bisher so aus:

    #include<iostream>
    #include<cmath>

    using namespace std;

    int main(){
    double a, b, c, d, x1, x2;
    //Für die Variabeln werden Beispielwerte eingesetzt

    cout << "Geben Du Werte ein " << endl;
    cin>> a >> b>> c;
    d = sqrt(b*b - (4*a*c));

    if(d<0){
    cout << "Keine Lösung " << endl;
    return -1;
    }

    if(d>0){
    cout << "2 Lösung " << endl;
    return 0;
    }

    //Punkt vor Strich
    x1 = (-b + d) / (2a);
    x2 = (-b - d) / (2
    a);

    cout << x1;
    cout << x2;

    return 0;

    }

    Es läuft fehlerlos aber nach der Wertenabfrage erscheint als Ausgabe:
    nannan

    Ich hoffe ihr könnt mir weiterhelfen und bitte versteht , dass ich ein blutiger Anfänger bin.
    Ich entschuldige mich für meine mangelnde Recherche , falls es schon so einen ähnlichen Beitrag geben sollte.

    mfg


  • Mod

    d = sqrt(b*b - (4*a*c));
    
    if(d<0){
    

    Vielleicht solltest du noch einmal die Definition deiner Diskriminante überdenken. Die Wurzel von -4 ist jedenfalls nicht -2, falls du dieser Meinung sein solltest.

    Und für den Fall, dass du a = b = c = 0 durchgerechnet haben solltest: Überleg dir mal, was diese Koeffizienten beschreiben und was die Lösung dieses "Gleichungs"systems ist. NaN klingt da nicht verkehrt (NaN steht für "Not a Number" und ist das Ergebnis von undefinierten Rechenoperationen, wie z.B. 0.0/0.0 oder sqrt(-1)).



  • Die Formel heißt pq-Formel, also wäre es doch am einfachsten, auch diese beiden Variablen in deinem Programm einzuführen!

    Was sollen die drei einzugebenden Zahlen sein? Diese hier? ax²+bx+c=0 Ein cout, das die einzugebenden Zahlen beschreibt, wäre hilfreich.

    Schritt 1: berechne p und q
    Schritt 2: berechne den Radikant
    Schritt 3: Fallunterscheidung: Radikant = 0, > 0, oder < 0
    Schritt 4: Lösung(en) ausgeben



  • Es ist auch eine gute Idee, die Eingaben nochmal auszugeben.
    Ebenso die Zwischenergebnisse.

    Und zwischen deinen Ergebnissen sollte noch etwas Leerraum (auch Zeilenumbruch) stehen.


Anmelden zum Antworten