while Schleife mit continue und break
-
Weil ich eigentlich gedacht habe, dass durch die Continue Anweisung zurück gesprungen wird und ich wieder zwei Zahlen eingeben kann...
-
silent_max schrieb:
Weil ich eigentlich gedacht habe, dass durch die Continue Anweisung zurück gesprungen wird und ich wieder zwei Zahlen eingeben kann...
Achso. Nein. Da hast du was falsch verstanden. continue leitet den nächsten Schleifendurchgang ein. Du landest also in Zeile 13. continue ist in dem Fall sogar total überflüssig, weil es die letzte Anweisung deiner Schleife ist. Du landest danach sowieso wieder am Schleifenanfang.
-
Achso...
Sorry, dass ich so frage, aber wie muss ich das Programm umschreiben, damit ich erneut Zahlen für x und y eingeben kann? Weil so war das Programm eigentlich gedacht, dass die Eingabe von x und y verglichen wird, welche Zahl größer ist und dann zurück springt, damit ich erneut für x und y Zahlen eingeben kann. Abbruckbedingung soll die Eingabe von 101 sein.
Weil auch wenn ich das "conitune" weg lasse, kommt immer noch die Endlosschleife.
-
int main() { float x, y; while((x<=100)&&(y<=100)) { cout << "Geben Sie zwei Zahlen zwischen 0 und 100 ein!" << endl; cout << "x:"; cin >> x; cout << "y:"; cin >> y; if(x<y) { cout << "x = " << x << " ist kleiner als y = " << y << endl; } if(y<x) { cout << "y = " << y << " ist kleiner als x = " << x << endl; } if(x > 100 ||y > 100) { cout << "Abbruch!" << endl; break; } } }
-
continueist eigentlich nur eine seltsame Schreibweise für if bzw. if-else:for(int i=1; i<20; ++i) { if( i%2!=0 ) continue; // Ich will nur mit geraden Zahlen arbeiten // Mache dies // Mache das // ... }Das Gleiche wie:
for(int i=1; i<20; ++i) { if( i%2==0 ) { // Ich will nur mit geraden Zahlen arbeiten // Mache dies // Mache das // ... } }
-
Sorry, heute sehe ich gar nichts mehr.
Genau - abgesehen von "return 0" - Deinen Code hatte ich, nachdem ich die Continue Anweisung rausgehauen habe und es kommt immer noch eine Endlosschleife.
-
int main() { float x, y; do { cout << "Geben Sie zwei Zahlen zwischen 0 und 100 ein!" << endl; cout << "x:"; cin >> x; cout << "y:"; cin >> y; if(x<y) { cout << "x = " << x << " ist kleiner als y = " << y << endl; } if(y<x) { cout << "y = " << y << " ist kleiner als x = " << x << endl; } if(x > 100 ||y > 100) { cout << "Abbruch!" << endl; } }while( (x<=100) && (y<=100) ); }Du suchst sowas.
Das ist ein Anwendungsfall für do-while.
-
Beachte: Die Schleife umfasst auch die Eingabe der Zahlen.
-
Ok.
Jetzt funktioniert es auch.
Aber bei do...while Schleifen bin ich noch nicht angelangt in meinem Buch, kommt aber demnächst.
Vielen Dank ersteinmal für Deine Tipps, habe mich sehr weitergebracht.
Gruß Max
-
silent_max schrieb:
Ok.
Jetzt funktioniert es auch.
Aber bei do...while Schleifen bin ich noch nicht angelangt in meinem Buch, kommt aber demnächst.
Vielen Dank ersteinmal für Deine Tipps, habe mich sehr weitergebracht.
Gruß Max
Wenn es um Schleifen geht müssen dir die Begriffe fußgesteuert und kopfgesteuert bekannt sein und was man darunter versteht.

-
Du kannst das auch mit der while-Schleife machen.
Nur solltest du dabei beachten, das du den Variablen vorher auch Wert zuweist (initialisierst).float x=0, y=0; while((x<=100)&&(y<=100)) { cout << "Geben Si...Wenn du es ohne Initialisierung machst, sollte der Compiler auch eine Warnung ausgeben.