Simple problème de comparateur
Résolu
firstdied
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
firstdied Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
firstdied Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
La question est simple: pourquoi la boucle ne continue-t-elle pas si j'entre une valeur non-désirée? De plus il se plante si j'entre 'S'.
le code c++:
do {cout<<"direction ? (N-O-S-W)"<<endl;cin>>direction;} while ((direction!='S')&&(direction=!'O')&&(direction!='W')&&(direction=!'N'));
Merci pour votre aide :-)
La question est simple: pourquoi la boucle ne continue-t-elle pas si j'entre une valeur non-désirée? De plus il se plante si j'entre 'S'.
le code c++:
do {cout<<"direction ? (N-O-S-W)"<<endl;cin>>direction;} while ((direction!='S')&&(direction=!'O')&&(direction!='W')&&(direction=!'N'));
Merci pour votre aide :-)
A voir également:
- Simple problème de comparateur
- Iphone 14 simple - Guide
- Comparateur amazon - Accueil - Commerce
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Comparateur prix amazon - Guide
4 réponses
Erreur dans la condition :
L'operateur inegal s'ecrit != et non pas =!.
Je dirai que ton code ne plante pas a la compilation parce qu'il considere le =! comme une definition. Et qu'il trafique donc la valeur de ta variable sans que tu ne le veuille.
Bref la bonne condition est la suivante :
L'operateur inegal s'ecrit != et non pas =!.
Je dirai que ton code ne plante pas a la compilation parce qu'il considere le =! comme une definition. Et qu'il trafique donc la valeur de ta variable sans que tu ne le veuille.
Bref la bonne condition est la suivante :
(direction!='S')&&(direction!='O')&&(direction!='W')&&(direction!='N')
lorsque tu écrivait par exemple. il definissait, autrement dit il atribuait, la valeur !'N' a ta variable direction. l'operateur not considerant que tout ce sui n'est pas 0 est vrai il prend ton caractère 'N' comme un booleen vrai et renvoie son inverse donc 0. Ce 0 rend automatiquement ton ET faux ce qui sort de ta condition while directement. Et tout ca sans aucun avertissement puisque la syntaxe et la semantique sont correcte.