it-swarm.com.de

Wie erstellen Sie eine Wiederholungsschleife in C++?

Wie erstellen Sie eine Wiederholungsschleife in C++? Im Gegensatz zu einer standardmäßigen While- oder For-Schleife. Ich muss die Bedingung am Ende jeder Iteration überprüfen und nicht am Anfang.

24
do
{
  //  whatever
} while ( !condition );
39
Adrien

Wenn Sie die Bedingung am Anfang der Schleife prüfen möchten, negieren Sie die Bedingung einfach in einer Standardvariable while:

while(!cond) { ... }

Wenn Sie es am Ende benötigen, verwenden Sie eine do ... while-Schleife und negieren Sie die Bedingung:

do { ... } while(!cond);
9
Zifre

Sie können Makros verwenden, um die Wiederholungssyntax zu simulieren.

#define repeat do
#define until(exp) while(!(exp))
6
weiwangchao

Ein Beispiel: Sie möchten eine Schleife haben, die angehalten wird, wenn alle Personen einer Gruppe gezählt wurden. Wir betrachten den Wert X als gleich der Anzahl der Personen in der Gruppe, und der Zähler wird verwendet, um alle Personen in der Gruppe zu zählen. Um das zu schreiben 

während (! Bedingung)

der Code wird sein:

int x = Menschen; 

int counter = 0; 

while (x! = Zähler)

{

counter ++;

}

0 zurückgeben; 

2
Kehlin Swain

Benutz einfach:

do
{
  //enter code here
} while ( !condition );

Was dies bedeutet, verschiebt den Teil "Check for condition" zum Ende, da while am Ende ist. Es überprüft also nur die Bedingung, nachdem der Code ausgeführt wurde, genau wie Sie es möchten

2
rOhAn703

Wiederholung soll eine einfache n-malige Schleife sein ... eine zustandslose Version einer Schleife.

#define repeat(n) for (int i = 0; i < n; i++) 

repeat(10) {
    //do stuff
}

sie können auch eine zusätzliche Barce hinzufügen, um die Variable i noch mehr zu isolieren

#define repeat(n) { for (int i = 0; i < n; i++) 
#define endrepeat }

repeat(10) {
    //do stuff
} endrepeat;

Jemand hat Bedenken geäußert, etwas anderes als einen Wert zu übergeben, beispielsweise einen Ausdruck. Wechseln Sie einfach in Schleife, um rückwärts zu laufen, sodass der Ausdruck nur einmal ausgewertet wird

#define repeat(n) { for (int i = (n); i > 0; --i)
0
Gilles Page