Vous vous demandiez s'il y avait un moyen de comparer 3-4 conditions dans une boucle for? Existe-t-il un moyen de faire cela avec juste une boucle for ou devrais-je ajouter une instruction if dans la boucle pour contrôler le non-impression de 91 - 96?
J'ai essayé d'ajouter une condition initiale, des crochets autour des deux et autour d'eux tous mais je n'arrive pas à le faire imprimer au-delà de 90 et ramasser à 97.
for (int cntr = 65; cntr >= 65 && cntr < 91 || cntr > 96 && cntr < 122; cntr++) for (int cntr = 65; cntr < 91 || cntr > 96 && cntr < 122; cntr++)
Essayer d'imprimer des caractères ASCII de 65 à 122 sans afficher de 90 à 96. J'essayais de tout mettre en une seule boucle for si possible.
3 Réponses :
Comme d'autres l'ont souligné, la condition centrale est une condition break .
Comme vous voulez tout dans une boucle, vous ne voulez pas interrompre lorsque vous atteignez cntr == 91 .
Voici un moyen de le faire proprement en une seule boucle (style C ++): p>
for ( i = 0; break_condition_1; ++i)
{
if ( break_condition_2 || break_condition_3 )
break;
// loop code
}
Plus généralement, il y a des moments où vous pouvez avoir plusieurs conditions de rupture authentiques dans une boucle, mais il est préférable de garder certaines / la plupart d'entre elles hors de la première ligne de la boucle for , c'est à dire. pour (...; ...; ...) , car il est inutile et souvent plus difficile à lire. Vous pouvez simplement écrire une condition de rupture au début de votre boucle (c.-à-d. Ligne 2):
for (char cntr = 65; cntr < 123; cntr++)
{
if ( cntr == 91 ) // skips the parts that you don't want
cntr = 97;
std::cout << cntr << std::endl;
}
Ok, donc corrigé le problème comme ceci:
for (int cntr = 65; cntr < 123; cntr++)
{
if(!(cntr >= 91 && cntr <= 96))
cout << "#" << cntr << " = ASCII Char: " << char(cntr) << endl;
}
Je suppose que c'est la meilleure façon de résoudre le problème pour le moment. Merci encore
Les réponses ci-dessus / ci-dessous l'ont assez bien expliqué sur la façon dont vous pouvez procéder pour avoir plusieurs conditions de boucle for.
Mais disons que vous faites quelque chose comme ça (comme suggéré par Elliott Smith):
int i = 0;
while (break_condition_1 || break_condition_2 || break_condition_3){
i++;
}
Il pourrait être préférable de le faire simplement pour des raisons de clarté:
for ( i = 0; break_condition_1; ++i)
{
if ( break_condition_2 || break_condition_3 )
break;
// loop code
}
Il n'y a pas de différence majeure entre les boucles for et while, à part fact for loop est plus simple à écrire dans certaines situations. Dans votre cas, je recommanderais la boucle while.
while équivalent à votre boucle for est while (break_condition_1 &&! (break_condition_2 || break_condition_3))
N'oubliez pas que les boucles se terminent dès que la condition est fausse. Vous devez avoir un
ifdans la boucle.La condition de boucle est une condition de terminaison . Au moment où il devient faux, la boucle se termine. Vous ne pouvez pas avoir de «lacunes».
Ok, ça a du sens. Je vous remercie
Je le pensais mais je ne savais pas s'il y avait un moyen de contourner cela. Merci beaucoup d'avoir clarifié cela pour moi.
n'utilisez pas de nombres magiques comme 65, 90, 96 ou 122, personne ne sait ce qu'ils signifient. Utilisez plutôt
'a','A'ou'z'