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*1rechne 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 999Wie 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 999Ich 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...