Zahlen erstellen lassen?
-
Hm, da hab ich wohl wirklich dumme Sachen geschrieben mit,
1*100+1*10+1*1=1 gleich 1*1*1+1*1*1+1*1*1=1
Aber warum lässt dann die Schleife wirklich 1 zu?
-
0*100 + 0*10 + 1*1
rechne es aber lieber nochmal nach
-
Wenn ich mir nun nochmal die Schleife ansehe, dann läuft doch folgendes ab. Im ersten Moment ist i=j=k=0. Das heißt alle Schleifen werden übersprungen bis man in der innersten ist. Dort wir dann a = 0*100 + 0*10 + 0*1 gerechnet. Jetzt wird k = k + 1, j = j + 1 und i = i + 1 gerechnet. Und dann hab ich ja gleich als nächste Rechnung für a das stehen: a = 1*100 + 1*10 + 1*1, oder?
Oder ist es so, dass wenn die if-Schleife nach dem ersten Durchgang erfüllt war als letzter Teil des ersten Durchgangs k = k + 1 gerechnet und dann wieder ganz nach vorne zum ersten while gesprungen wird? Ich denke so ist's, stimmts?
-
Nach deinem Muster würde aber
000 111 222 333 444 555 666 777 888 999
Wie erklärst du dir dann also die 153
Deine innerste Schleife hat die Bedingung k<10.
Somit kommt nach 000 erstmal 001Mach nen Schreibtischtest
-
Was ist ein Schreibtischtest?
-
bandchef schrieb:
Was ist ein Schreibtischtest?
Auf Papier die Variablen aufschreiben und das Programm Befehl für Befehl im Kopf durcgehen und die Variablen immer aktualisieren.
-
Wenn ich jetzt die Schreibtischtest mache, komm ich in der Tat auf
000 111 222 333 444 555 666 777 888 999
Ich weiß aber nicht wie meine "Denke" falsch ist...
-
Auf die Ergebnisse komme ich aber, wenn ich jedesmal nach dem i=0 und j=0 waren und k<10 j = j + 1 und i = i + 1 überspringe, und nur j = j + 1 rechne, wenn k<10 nicht mehr erfüllt ist. So stimmts doch jetzt...
-
Entschuldige bitte ... mein Fehler.
Ein PAP oder Structogramm könnte dir weiterhelfen, aber dazu bietet die Eingabenmaske hier keine Buttons. Ich versuch es mal bildhaft zu argumentieren:int i=0; // fuehre die Schleife solange aus, wie i kleiner 10 while(i < 10) { int j=0; // fuehre die Schleife solange aus, wie j kleiner 10 -> while(j < 10) | { | // j um 1 erhoehen | cout << i << "-" << j << endl; | j++; --} // i um 1 erhoehen, wenn Schleife davor j >= 10 erreicht hat i++; }
Ausgabe:
i j ---- 0 0 0 1 0 2 usw 1 0 1 1 1 2 usw 9 0 9 1
-
Danke für deine ausführliche Erklärung. Ich hab's mir jetzt zusätzlich in Visual Studio 2010 mit dem Debugger angesehen. Da sieht man es sehr schön, dass die innerste while-Schleife so lange ausgeführt ist, bis k=10 ist und erst dann zum ersten mal die zweite while-Schleife (von "außen" gesehen; du weißt schon was ich meine... :-)) ausgeführt wird und j = j + 1 gerechnet wird...