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.
6 réponses
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);
Vous pouvez utiliser des macros pour simuler la syntaxe repeat-until.
#define repeat do
#define until(exp) while(!(exp))
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;
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
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)