+1 Daumen
2,2k Aufrufe

Könntet ihr mir die While-Schleife in eine Do-While-Schleife umwandeln?

int a=20;
int b=0;
int c=19;

while(c>0){
  if (a%c==0){
        b++;
  }
  c--;
}
Avatar von

2 Antworten

0 Daumen

do{
if(a%c==0) b++;
c--;
}while(c>0)
Das wäre die do-while Schleife.
Avatar von
0 Daumen

if (c > 0) do {
if (a%c==0) {
b++;
}
c--;
} while(c > 0);

Der Rumpf einer do-while-Schleife wird mindestens ein mal ausgeführt, weil die Prüfung der Bedingung am Ende stattfindet.

Der Rumpf einer while-Schleife wird eventuell überhaupt nicht ausgeführt, nämlich dann wenn die Bedingung schon zu Anfang nicht erfüllt ist.

Auf diesen Unterschied sollte man achten, wenn man eine while-Schleife in eine do-while-Schleife umwandelt.

In deinem konkreten Fall wird auch der Rumpf der while-Schleife mindestens ein mal ausgeführt, weil die Bedingung c > 0 anfänglich erfüllt ist. Die Lösung von Felixus ist deshalb auch korrekt, kann aber nicht verallgemeinert werden.

Avatar von 5,7 k

Das ist natürlich richtig. Ich finde es jedoch recht sinnlos, eine do-while Schleife zu nutzen, wenn der Rumpf IMMER nur dann ausgeführt werden darf, wenn die Bedingung für alle Durchläufe erfüllt sein muss.

Do-While ist sinnvoll, wenn im ersten Durchlauf sicher ist, dass der Rumpf ausgeführt werden kann bzw. so oder so mindestens einmal ausgeführt werden muss. Beispielsweise bei einem Programm, das auf eine bestimmte Verbindung prüfen muss. Für das obige Programm ist es absolut sinnfrei, da unübersichtlich und mehr Code. Ich bin deshalb von genannter Bedingung ausgegangen und habe die Primitiv-Lösung gezeigt.


Aber klar, das kann nicht verallgemeinert werden.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community