Simple problème de comparateur

Résolu
firstdied Messages postés 20 Statut Membre -  
firstdied Messages postés 20 Statut Membre -
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 :-)

4 réponses

  1. ReganDryke Messages postés 13 Statut Membre 6
     
    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 :
    (direction!='S')&&(direction!='O')&&(direction!='W')&&(direction!='N')
    1
    1. ReganDryke Messages postés 13 Statut Membre 6
       
      Edit : J'ai enfin compris pourquoi il acceptait toujours et ce qu'il se passait exactement dans ton code.
      lorsque tu écrivait
      direction =!'N'
      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.
      0
  2. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonsoir firstdied,
    Je n'ai pas trop regardé, mais n'y a-t-il pas une erreur là :
    direction=!'O'
    0
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    Encore moi. Je ne m'y connait pas trop en C++, mais je me pose la question :
    ((direction!='S')&&(direction=!'O')&&(direction!='W')&&(direction=!'N'));
    Est-ce que la variable direction doit être égale à S ET O ET W ET N ?
    C'est logique ?
    0
  4. firstdied Messages postés 20 Statut Membre
     
    Oula, merci beaucoup. Ca ne m'etait meme pas venu a l'idee que ca pouvait etre du a un probleme de syntaxe vu que le code s'executait quand-meme... Mais ca aura au moins ete instructif :-)
    0