.j
-
.j
-
Die do-while Schleife wird solange ausgeführt, solange die Bedingung hinter while wahr ist.
do { // Mach irgend etwas ... } while (Bedingung)
Eine Bedingung kennst du schon vom if.
Du kannst Bedingungen auch mit && UND und mit || ODER verknüpfen und mit ! negieren(((antwort == 'j') || (antwort == 'n'))) ist wahr, wenn 'j' oder 'n' eingegeben wurde.
(!((antwort == 'j') || (antwort == 'n'))) ist wahr, wenn etwas anderes als 'j' oder 'n' eingegeben wurde.Und schreib besser
scanf(" %c", &antwort); ^ Leerzeichen
(Das hatten wir gerade vor 30 Minuten
)
-
Du kannst auch ein flag nehmen.
int flag; do { flag = 0; // wenn die Schleife nochmal durchlaufen werden soll, muss flag auf 1 gesetzt werden } while (flag != 0);
-
.j
-
Geh doch mal Zeile für Zeile durch, was Dein Programm tun soll. Wenn Du Dir schwer dabei tust - nimm einen Debugger zur Hand. Der beherrscht die Anweisung "zeilenweise debuggen" und Du siehst direkt im Quellcode, an welcher Stelle was passiert.
Erstmal fragst Du den Benutzer etwas und speicherst die Antwort (z.B. 'x') in einer Variable. Dort steht jetzt die Antwort, solange Du die Variable veränderst oder die Funktion bzw. das Programm verlässt.
Nun steht also 'x' in antwort und Deine if-else-Verzweigungen stellen fest, dass 'x' nicht bei den genannten chars dabei ist.
Deshalb beginnt eine Schleife, in der nochmals (ohne Ausgabe, warum) eine Eingabe verlangt wird. Angenommen, jetzt wird eine der 6 "gültigen" Möglichkeiten eingegeben, erfolgt (weil sie laut Code in jedem Falle nach der Eingabe kommt) die Ausgabe "Mit dieser Antwort kann ich nichts anfangen.\n" und die Schleife wird verlassen (weil ja die antwort eine der Möglichkeiten ist).So war das wohl eher nicht gedacht...
-
Es wird das wiederholt, das zwischen dem 'do {' und dem '} while' steht.