Comment faire une boucle repeat-until en C++? Par opposition à une boucle While ou For standard. Je dois vérifier la condition à la fin de chaque itération plutôt qu'au début.Comment faire une boucle repeat-until en C++?
Répondre
do
{
// whatever
} while (!condition);
Lorsque vous voulez vérifier l'état au début de la boucle, nier simplement la condition sur une boucle while
standard:
while(!cond) { ... }
Si vous avez besoin à la fin, utilisez un do
. .. boucle while
et annule la condition:
do { ... } while(!cond);
Vous pouvez utiliser des macros pour simuler la répétition jusqu'à ce que la syntaxe.
#define repeat do
#define until(exp) while(!(exp))
C'est exactement ce que je cherchais. Je ne sais pas comment le "exp" fonctionne bien. Est-ce un joker générique? Je vous remercie! –
@ Ace.C C'est un nom d'argument. La deuxième '# define' fait une macro, qui agit comme une fonction. Donc, dans ce cas, '#define until (exp)' est une macro nommée 'until' qui prend un paramètre' exp', et se développe en 'while (! (Exp))'. –
Merci @ Conor.O, Y at-il peut-être un article ou un autre article sur ce sujet que vous pourriez me lier? J'ai de la difficulté à trouver de bonnes ressources pour faire ces sortes de macros –
Pour un exemple si vous souhaitez qu'une boucle s'arrête lorsqu'elle a compté toutes les personnes d'un groupe. Nous considérerons la valeur X comme égale au nombre de personnes dans le groupe, et le compteur sera utilisé pour compter toutes les personnes du groupe. (! Condition) Pour écrire le
tout
le code sera:
int x = personnes;
int compteur = 0;
while (x = compteur!)
{
compteur ++;
return 0;
utiliser Just:
do
{
//enter code here
} while (!condition);
Alors qu'est-ce que cela fait est, il déplace votre part « vérifier l'état » à la fin, puisque le while
est à la fin. Donc, il ne vérifie la condition qu'après avoir exécuté le code, tout comme vous le voulez
Répéter est supposé être une simple boucle n fois boucle ... 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 barce pour isoler la variable i encore plus
#define repeat(n) { for (int i = 0; i < n; i++)
#define endrepeat }
repeat(10) {
//do stuff
} endrepeat;
... Ce Uhh supplémentaire est assez triste. Emil a frappé soumettre plus tôt que je l'ai fait ... Le "accepté" devrait aller à lui ... – Adrien
Vous avez moins rep, et c'est une question extrêmement simple, donc je vais vous donner avec plaisir. :) –
Comme jalf l'a dit, cependant: Si vous voulez faire une boucle while plutôt qu'une boucle while do, vous devrez annuler la condition. –