C++ if else problem
-
Hey Leute, ich bin neu hier im Forum!
Wir fingen dieses Jahr an mit C++.
Nun wollte ich zuhause mal ein Programm schreiben, dass eine Rechenaufgabe beinhaltet die man lösen sollte.
Jedoch scheitere ich am IF-ELSE und ich weiß nicht wo der fehler liegt!
Hier der Sourcecode:#include <iostream>
using namespace std;
int main()
{
int loesung;cout <<"Rechentest:"<<endl<<endl<<endl;
cout <<"43*5=?";
cin >>loesung;
if(loesung = 215);
cout <<"Gut gemacht!"<<endl;
else
cout <<"Falsche Antwort! - Versuchs nochmal!"<<endl;system("PAUSE");
return EXIT_SUCCESS;
}----------
Eigentlich wollte ich noch was dazu machen, dass es die Funktion, also im fall "else" wieder aufruft, um die Rechnung nochmals zu versuchen, weiß ich aber nicht wie, aber wenn´s hier sowieso schon scheitert...
-
= != ==
// edit
wozu quälst du dich mit <<endl<<endl<<endl statt einfach cout <<"Rechentest:\n\n\n" zu schreiben
-
Das Problem liegt in der Zeile:
if(loesung = 215);hier hast du gleich zwei Fehler versteckt:
1. Gehört das ';' nach der Klammer nicht dorthin, sosnt würde (nach ordentlicher Formatierung das hier getan werden:
if(...) ; cout <<"Gut gemacht!"<<endl; // Wird auf jeden Fall ausgegeben else // Syntax-Fehler cout <<"Falsche Antwort! - Versuchs nochmal!"<<endl;2. Du hast statt dem Vergleichsoperator (==) den Zuweisungsoperator (=) benützt, die zeile sollte also korrekt so aussehen:
if(loesung == 215)MfG SideWinder
-
ach, dann hat das semikolon eigentlich auch eine besondere funktion.
unser lehrer schlicht und einfach: nach jeder zeile ein semikolon!
lol okay ganz versteh ich den zusammenhang noch nicht aber danke!
vergleichsoperator! eh klar...
nun noch: falls loesung falsch, nochmal von vorne....wie rufe ich die funktion nochmal auf?
-
Mach aus dem else cout <<"Falsche Antwort! - Versuchs nochmal!"<<endl;
ein
else { cout <<"Falsche Antwort! - Versuchs nochmal!"<<endl; main(); }
-
Darf man main() nochmal aufrufen?
@XaTrIxX: Nach jeder Anweisung gehört ein Semikolon, nicht nach jeder Zeile (dann brauch ich auch gleich gar keins, das Zeilenende findet man auch so)
MfG SideWinder
-
ah danke einfach mit main(); hab ich mir gedacht! ty
-
SideWinder schrieb:
Darf man main() nochmal aufrufen?
Was spricht dagegen? Obwohl ich hier definitiv eine do... while bevorzugen würde

-
TactX schrieb:
Was spricht dagegen?
Dass nach zu vielen falschen Antworten der Stack überläuft. Das ist IMHO hier noch übler, als ein goto zu benutzen.
-
Den will ich sehen, der das Programm so lange benutzt bis der Stack überläuft

-
MFK schrieb:
TactX schrieb:
Was spricht dagegen?
Dass nach zu vielen falschen Antworten der Stack überläuft. Das ist IMHO hier noch übler, als ein goto zu benutzen.
Ich meinte das eher prinzipiell. Und außerdem muss ich User-- da beipflichten

-
TactX schrieb:
Ich meinte das eher prinzipiell.
Ich auch. Mir ist klar, dass da kein User so lange falsche Ergebnisse eingibt, bis es knallt.
Ich bin der Meinung, dass man Rekursion als Schleifenersatz nur dann benutzen sollte, wenn man den Abbruch innerhalb der Stackgrenzen garantieren kann und eine Schleife zu umständlich wäre. Keinesfalls sollte sich das ein Anfänger als "best practice" angewöhnen.
-
XaTrIxX schrieb:
ah danke einfach mit main(); hab ich mir gedacht! ty
Vergiss das ganz schnell !!!
Wenn dein Lehrer das Programm sieht un du ihm sagst das wir das hier mit main() gesagt haben ist unser Ruf ganz schnell hin ...
-
dafür gibt es ja schließlich schleifen.
das mit dem semikolon ist auch logisch.
wenn du es setzt dann gehört das else nicht mehr zum if sondern wird als EINE EINZELNE anweisung angesehen.ps: lernt man heute eigentlich nicht mehr mit leerzeichen zu schreiben?
cout<<"Wenn das mal nicht ganz toll\nübersichtlich ist"<<endl<<endl<<"Und noch eine Zeile wenn man mag"<<endl<<endl<<"Der Schluss fehlt noch"<<endl<<endl<<endl<<"Doch noch nicht genug\n\n\n"<<endl<<endl<<endl;
-
TactX schrieb:
SideWinder schrieb:
Darf man main() nochmal aufrufen?
Was spricht dagegen?
standard 3.6.1.3
the funtion main shall not be used within the program. ...
-
volkard schrieb:
TactX schrieb:
SideWinder schrieb:
Darf man main() nochmal aufrufen?
Was spricht dagegen?
standard 3.6.1.3
the funtion main shall not be used within the program. ...Tatsache. Danke für die Info.
OT: Gilt das auch für C? Da habe ich nämlich nichts gefunden.