Ausgabe bei einer do-while Schleife
-
Hallo,
ich bin noch ein C++ Anfänger und versuche gerade, die do-while-Schleife zu verstehen.
Leider verstehe ich bei folgendem Programmcode die Ausgabe nicht:int s=0, t=0; do { if (s>8) break; s+=2; if (s<6) continue; t+=3; }while (s); cout << t << endl;
Ich weiß, dass für t 9 herauskommt, nur leider kann ich das nicht so recht nachvollziehen.
Meine Überlegung war nämlich folgende:
Sobald s größer als 8 ist, wird die Schleife unterbrochen und t wird dann nicht mehr mit 3 weiter addiert.
Da beide bei 0 starten, kam ich darauf, dass bei s=2 t=3 ist usw.
Die Schleife würde dann unterbrochen werden, wenn s größer als 8 ist, also in dem Fall 10, nur wäre dann t ja schon gleich 15, weil insgesamt 5 Additionen stattgefunden haben.Kann mir jemand helfen?
-
Hallo,
ersteinmal: falsches Unterforum -> hier ist C++/CLI (aber ein Moderator wird das sicherlich verschieben).
Weißt du denn, was die Zeile 6 genau macht?
Hast du denn einen Debugger (sollte bei einer IDE automatisch da sein), mit dem du Schritt für Schritt dadurch gehen kannst?
Ansonsten einfach mal eine Ausgabe vor Zeile 4 einbauen:cout << "s:" << s << endl; cout << "t:" << t << endl;
-
Leider habe ich keinen automatischen Debugger. Ich habe mir zum Verständnis auch s ausgeben lassen, aber ich verstehe die Aufgabe immer noch nicht.
Ich kann ja mal meinen Gedankengang schildern:
Erst, wenn s größer als 8 ist, wird der Vorgang abgebrochen.
Da aber s zuerst 0 ist, wird es zunächst um 2 erhöht. Da es dann immer noch kleiner als 6 ist, geht der Vorgang weiter (continue) und t wird von 0 auf 3 erhöht.Dann wird s wieder um 2 erhöht, weil es kleiner als 8 ist, s ist also nun 4 und damit noch kleiner als 6, weshalb t nun um 3 erhöht werden darf.
Dann wird s auf 6 erhöht, weil es immer noch kleiner als 8 ist, da aber s nun schon 6 ist, dürfte doch t nicht mehr um 3 addiert werden, da die if-Bedingung (s<6) nicht mehr erfüllt ist.
Kann mir da jemand helfen?
-
Du hast
continue
nicht verstanden.
-
Kann mir das jemand noch etwas genauer erklären.
Das wäre sehr nett.
-
continue
überspringt den restlichen Code der Schleife und führt direkt wieder die Schleifenbedingung aus.
Den Code kann man auch so schreiben:int s=0, t=0; do { if (s>8) break; s+=2; if (s>=6) t+=3; }while (s); cout << t << endl;
Verstehst du es jetzt?