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:
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.