web-dev-qa-db-fra.com

Comment créez-vous une boucle de répétition jusqu'à la fin en C++?

Comment créez-vous une boucle de répétition jusqu'à la fin en C++? Par opposition à une boucle While ou For standard. Je dois vérifier l'état à la fin de chaque itération, plutôt qu'au début.

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

Lorsque vous souhaitez vérifier la condition au début de la boucle, annulez-la simplement sur une boucle while standard:

while(!cond) { ... }

Si vous en avez besoin à la fin, utilisez une boucle do ... while et annulez la condition:

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

Vous pouvez utiliser des macros pour simuler la syntaxe Repeat-Until.

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

Par exemple, si vous souhaitez avoir une boucle qui s’arrête après avoir compté toutes les personnes d’un groupe. Nous considérerons que la valeur X est égale au nombre de personnes du groupe et le compteur servira à compter toutes les personnes du groupe. Écrire le 

tant que (! condition)

le code sera:

int x = personnes; 

int counter = 0; 

tandis que (x! = compteur)

{

counter ++;

}

retourne 0; 

2
Kehlin Swain

Il suffit d'utiliser:

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

Ainsi, cela déplace votre partie "vérification de la condition" à la fin, puisque while est à la fin. Donc, il ne vérifie que la condition après avoir exécuté le code, tout comme vous le souhaitez

2
rOhAn703

Repeat est censé être une simple boucle n fois, une version sans condition d’une boucle.

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

repeat(10) {
    //do stuff
}

vous pouvez également ajouter un supplément pour isoler encore plus la variable i

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

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

[modifier] Quelqu'un a fait part de son inquiétude à l'idée de transmettre un élément autre qu'une valeur, tel qu'une expression. il suffit de passer en boucle pour s'exécuter en arrière, ce qui entraîne l'évaluation de l'expression une seule fois

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