Syntaxe conditionnelle

Vitaldix Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -  
Vitaldix Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !

Alors voilà, j'ai une boucle do/while, et pour en sortir, j'ai une syntaxe un peu bizarre :

while (((compteurcroix>0 && compteurcarre>0)||(compteurcarre1>0 &&compteurgdl>0 &&compteurptl>0)||(compteurligne>0 && compteurt>0))||((compteurcroixe>0 && compteurcarree>0)||(compteurcarre1e>0 &&compteurgdle>0 &&compteurptle>0)||(compteurlignee>0 && compteurte>0)));


En gros ce que j'en attends :
la boucle tourne tant que
-soit compteurcroix et compteurcarre sont supérieur à 0
-soit compteurcarre1, compteurgdl et compteurptl sont supérieur à 0
-soit compteurligne et compteurt sont supérieur à 0
OU tant que
-soit compteurcroixe et compteurcarree sont supérieur à 0
-soit compteurcarre1e, compteurgdle et compteurptle sont supérieur à 0
-soit compteurlignee et compteurte sont supérieur à 0

Ma question : est-ce la bonne syntaxe ?
J'ai testé le programme, compteurcroixe et compteurcarre sont arrivés à 0 et la boucle continuait de tourner quand même, donc je me suis que quelque chose allait pas mais je trouve pas...

Merci de votre éclaircissement !

1 réponse

tksteph Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   25
 
Ya t il une relation entre tes deux groupes de compteurs? (XXX et XXXe)

Si NON, il n'ya aucune raison que ta boucle s'arrête de tourner lorsque compteurcroixe et compteurcarre arrivent à 0 . Imagine que (compteurcroix > 0 && compteurcarre > 0) et qu'à coté,
(compteurcroixe = 0 && compteurcarree = 0). Alors ta boucle continuerai de tourner quand même car entre les deux conditions tu as mis un OU (||).

Donc revois tes spécifications.
Pour la syntaxe, en dehors de quelques parenthèses qui pourraient être rajoutées, RAS.
0
Vitaldix Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   6
 
Merci de ta réponse.
J'avais déjà testé ce que tu m'as conseillé (mettre le && à la place du || du milieu, si c'est de ça que tu parles) et ça ne change rien.

En fait, j'aurai dû préciser je pense, c'est que toutes les variables entrent dans la condition de la boucle, mais elles ne varient pas toutes selon ce que je dis à la console (c'est normal), d'où la nécessite de les séparer avec des parenthèses, je pense...

Par exemple, selon ce que je choisis dans le programme, seuls compteurcroix et compteurcarre peuvent varier, ainsi que compteurlignee et compteurte par exemple (en gros 2 ou 3 variables de chaque "petite parenthèse" de chaque côté du || du milieu, donc ça fait deux groupes de 2 ou 3), sachant qu'elles sont indépendantes.

En gros, ce que je veux faire, c'est que la boucle s'arrête quand les deux (ou trois) variables d'un des trois groupe du chaque côté du || du milieu sont égales à 0 (et ça s'arrête bien à 0 vu que ça descend de 1 en 1 donc le problème n'est pas là, j'ai même de quoi vérifier que la valeur 0 est atteinte).
0