Probleme mit if-schleife



  • Mein Problem hierbei ist, dass die Werte die ich "sgnb" in den if-schleifen gebe, nicht korrekt ausgeführt werden. Das Programm beschreibt einfach nur eine quadratische Gleichung auf 2 Lösungswegen, somit muss x1=x11 und x2=x22 sein!
    Wo liegt mein Fehler? Ich hab es ausprobiert mit a=1, b=-3 und c=2 (lsg: x1=2, x2=1). Ich habe herausgefunden, dass wenn ich nur ein if mit (b<0) UND sgbn=0 setze, das Programm richtig ausgeführt wird.
    Schon mal danke im Voraus!

    #include <iostream>
    #include <math.h>
    #include <cmath>
    using namespace std;
    
    int main(){
    double a, b, c, wurzel, x1, x2, x11, x22, sgnb;
    cout<<"Geben Sie nacheinader die Parameter a, b und c ein!"<<endl;
    cin>>a;
    cin>>b;
    cin>>c;
    
    if (b*b-4*a*c<0){
    cout<<"Negativer Radikand!"<<endl;
    return 8;}
    wurzel=sqrt(b*b-4*a*c);
    cout<<"Wurzel="<<wurzel<<endl;
    
    x1=(-1*b+wurzel)/(2*a);
    x2=(-1*b-wurzel)/(2*a);
    cout<<"x1="<<x1<<endl;
    cout<<"x2="<<x2<<endl;
    
    if(b>0){
    sgnb=1;}
    else if(b=0){
    sgnb=0;}
    else {
    sgnb=-1;}
    
    x11=-(sgnb*wurzel+b)/(2*a);
    x22=c/(a*x11);
    cout<<"x11="<<x11<<endl;
    cout<<"x22="<<x22<<endl;
    
    return 0;
    }
    


  • Bei Problemen mit if-schleifen gibt es eine spezielle Seite, die ALLE Fragen zu diesem Thema beantwortet:

    http://www.if-schleife.de/

    Noch ein Tip: formatiere Deinen Text so, daß man ihn lesen kann, dann wird Dir auch hier geholfen.
    VG



  • Tipp: Zeile 26 anschauen und korrigieren (bzw. Warnung bei deinem Compiler beachten)



  • Danke, dann schau ich gleich mal auf die Seite.
    Also der Code wird ohne Fehler kompiliert. Hatte es auch schon mit 3 ifs (in Zeile 24, 26 und 28) versucht mit dem gleichen Misserfolg



  • Welches Zeichen wird für einen Vergleich verwendet? Welches für eine Zuweisung?



  • also nach meinem Anfänger-Wissensstand steht == für einen Vergleich und = für eine Zuweisung. In meinem Fall möchte ich ja eine Zuwesiung machen, daher finde ich den Fehler nicht.



  • Jetzt weiss ich was du meinst, vielen Dank für den Tipp! Jetzt funktioniert es.


Anmelden zum Antworten