Problem mit While (Break und continue)
-
Hallo,
hab wieder ne Frage -.- Bitte helfen...#include <iostream> using namespace std; int main() { unsigned short small; unsigned long large; unsigned long skip; unsigned long target; const unsigned short MAXSMALL=65535; cout << "Bitte eine kleine Zahl eingeben: "; cin >> small; cout << "Bitte eine grosse Zahl eingeben: "; cin >> large; cout << "Bitte eine Sprungzahl eingeben: "; cin >> skip; cout << "Bitte eine Zielzahl eingeben: "; cin >> target; cout << "\n"; while (small < large && large > 0 && small < MAXSMALL) { small++; if (small % skip == 0) // (1) { cout << "Ueberspringen " << small << endl; // (2) continue; } if (large == target) { cout << "Ziel getroffen!"; break; } large-=2; // (3) } cout << "\nKlein: " << small << " Gross: " << large << endl; system("PAUSE"); return 0; }Kommentare:
(1) - Wenn ich 2,20,4,6 eingebe, dann ist ja 2 Mod 4 = 2 und nicht 0, wie wird dann If aber true?
(2) - und wenn small 2 ist, wie kann es sein, dass small als 4 ausgegeben wird, wo es doch eig 2 ist?
(3) - kann das nicht gleich nach small++ auftreten?DANKE FÜR JEDE ANTWORT !
-
Wieso bist du mit dem Debugger nicht einfach zeilenweise durchgegangen?
Dann hättest du sofort gesehen, dass die Bedingung im ersten Durchgang nicht wahr ist, sehr wohl aber im zweiten Durchgang, wo small 4 wird.
-
Athar schrieb:
Wieso bist du mit dem Debugger nicht einfach zeilenweise durchgegangen?
Dann hättest du sofort gesehen, dass die Bedingung im ersten Durchgang nicht wahr ist, sehr wohl aber im zweiten Durchgang, wo small 4 wird.Das ist mir neu. Wo kann man denn sehen, wo die Vorgänge vom Debuggen protokoliert werden?
-
du gehst mit dem Debugger schrittweise durch das Programm und schaust dir die Werte an bzw. in welche Zweige das Programm springt. Wie du den Debugger benutzt fragst du am Besten im IDE/ Compiler-Forum nach.
-
Danke, hab das Problem gelöst
