Comment faites - vous une boucle Repeat-Until en C++?

Comment faire une boucle Repeat-Until en C++? Par opposition à une boucle While OU For standard. J'ai besoin de vérifier l'état à la fin de chaque itération, plutôt qu'au début.

24
demandé sur Adrien 2009-07-03 03:36:19

6 réponses

do
{
  //  whatever
} while ( !condition );
38
répondu Adrien 2009-07-04 18:59:33

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

while(!cond) { ... }

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

do { ... } while(!cond);
9
répondu Zifre 2009-07-02 23:54:39

Vous pouvez utiliser des macros pour simuler la syntaxe repeat-until.

#define repeat do
#define until(exp) while(!(exp))
7
répondu weiwangchao 2016-02-17 17:29:27

Pour un exemple si vous voulez avoir une boucle qui s'est arrêtée quand elle a compté toutes les personnes dans un groupe. Nous considérons que la valeur de X doit être égal au nombre de personnes dans le groupe, et le compteur sera utilisé pour compter toutes les personnes dans le groupe. Pour écrire le

While (!condition)

Le code sera:

Int x = personnes;

Int compteur = 0;

While (x != compteur)

{

Compteur++;

}

Retour 0;

2
répondu Kehlin Swain 2014-10-13 17:06:16

Il suffit d'utiliser:

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

Donc ce que cela fait est, il déplace votre partie 'check for condition' à la fin, puisque le while est à la fin. Donc, il vérifie seulement la condition après avoir exécuté le code, tout comme vous le voulez

2
répondu rOhAn703 2017-03-07 02:22:53

La répétition est supposée être une boucle simple n fois la boucle... un conditionless version d'une boucle.

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

repeat(10) {
    //do stuff
}

Vous pouvez également ajouter un barce supplémentaire 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 posté une préoccupation concernant le passage d'une autre chose qu'une valeur, telle qu'une expression. il suffit de changer en boucle pour courir en arrière, provoquant l'expression à évaluer une seule fois

#define repeat(n) { for (int i = (n); i > 0; --i)
0
répondu Gilles Page 2018-03-25 23:49:48