Condition while impossible
Résolu
Programath
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voici une partie de monde code. Lorsque j'utilise les conditions "<" ou ">" dans mon while l'exécution fonctionne très bien cependant lorsque j'utilise "!=" cela m'interdit toutes valeurs ("saisissez votre choix" s'affiche à l'infinie).
Si quelqu'un à un conseil à me donner je prend !!
Merci d'avance :)
Voici une partie de monde code. Lorsque j'utilise les conditions "<" ou ">" dans mon while l'exécution fonctionne très bien cependant lorsque j'utilise "!=" cela m'interdit toutes valeurs ("saisissez votre choix" s'affiche à l'infinie).
Si quelqu'un à un conseil à me donner je prend !!
Merci d'avance :)
#include <iostream> #include <vector> #include <cmath> using namespace std; int saisie_villeB() { int choix; cout<<"Choisissez une ville: "<<endl; cout<<"Choix 1: Ville A"<<endl; cout<<"Choix 3: Ville C"<<endl; cout<<"Choix 4: Ville D"<<endl; cout<<endl; do{ cout<<"Saisissez votre choix: "; cin>>choix; }while (choix !=1 || choix!=3 || choix !=4); return choix; }
Configuration: Windows / Chrome 96.0.4664.93
A voir également:
- Condition while impossible
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Condition optimale téléphone ✓ - Forum Mobile
- Excel champ calculé avec condition - Forum Excel
4 réponses
C'est un erreur très fréquente que presque tout le monde a fait au moins une fois.
On connait la condition de sortie qui est : "je veux ceci OU cela".
Comme on doit écrire la condition pour recommencer c'est l'inverse : "je ne veux ni ceci ni cela". Et on a toujours le OU en tête. Mais le test à faire est bien : "je ne veux pas ceci ET je ne veux pas cela". On peut aussi l'écrire : je veux l'inverse de "ceci ou cela". Ce qui donne ici:
Ça se retrouve par l'algèbre de Boole ou par le bon sens.
On connait la condition de sortie qui est : "je veux ceci OU cela".
Comme on doit écrire la condition pour recommencer c'est l'inverse : "je ne veux ni ceci ni cela". Et on a toujours le OU en tête. Mais le test à faire est bien : "je ne veux pas ceci ET je ne veux pas cela". On peut aussi l'écrire : je veux l'inverse de "ceci ou cela". Ce qui donne ici:
} while (choix!=1 && choix!=3 && choix!=4);
// ou bien en faisant mieux apparaitre la condition de sortie
} while ( !(choix==1 || choix==3 || choix==4) );
Ça se retrouve par l'algèbre de Boole ou par le bon sens.
Bonsoir,
Pour que la boucle s’arrête, il faut que la condition soit fausse, ce qui n’est jamais le cas...
Ritchi
Pour que la boucle s’arrête, il faut que la condition soit fausse, ce qui n’est jamais le cas...
Ritchi
Bonjour,
Et oui, ta condition est toujours vraie. Ton "OU" n'est pas une bonne idée.
Prenons des exemples:
- si choix vaut 9, ça revient à faire : si VRAI OU VRAI OU VRAI, 3 bonnes raisons pour être VRAI.
- si choix vaut 1, ça revient à faire : si FAUX OU VRAI OU VRAI, 2 bonnes raisons pour être VRAI.
Et tu sûr que c'est bien "OU" qu'il faut utiliser?
Et oui, ta condition est toujours vraie. Ton "OU" n'est pas une bonne idée.
Prenons des exemples:
- si choix vaut 9, ça revient à faire : si VRAI OU VRAI OU VRAI, 3 bonnes raisons pour être VRAI.
- si choix vaut 1, ça revient à faire : si FAUX OU VRAI OU VRAI, 2 bonnes raisons pour être VRAI.
Et tu sûr que c'est bien "OU" qu'il faut utiliser?
Je trouve que cela se lit plus naturellement comme : tant qu'on n'est pas dans l'une des situations suivantes ...