Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2808 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  problème de logique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème de logique

n°310869
lordankou
Posté le 16-02-2003 à 20:48:25  profilanswer
 

bon voila j'ai un problème de condition dans une partie. j'ai la portion de code suivant :  
 
sortie = ((choix !=  1) || (choix != 2) || (choix != 3) || (choix != 4));
printf("\n%d\n", sortie);
if (sortie) {printf("Choix non valide ! taper 1,2,3 ou 4" );}
 
 
avec choix et sortie deux entiers et avant un petit scanf("%d", &choix);
or pour n'importe quelle choix (1,2,3,4 ou 78 par exemple) j'ai toujours sortie égale à 1.
 
or quand je mes juste sortie = (choix != 1);  j'ai bien la condition vérifié et je peux sortir de ma boucle.
 
bref dés que je mes le || OU logique ça déconne.
quelqu'un aurait une idée d'ou ça foire ?


Message édité par lordankou le 16-02-2003 à 20:49:22

---------------

mood
Publicité
Posté le 16-02-2003 à 20:48:25  profilanswer
 

n°310876
gloop
Posté le 16-02-2003 à 20:55:34  profilanswer
 

avec des && ce serait mieux

n°310877
bjone
Insert booze to continue
Posté le 16-02-2003 à 20:57:36  profilanswer
 

if( choix < 1 || choix > 4 )
  printf(......

n°310879
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 16-02-2003 à 21:00:58  profilanswer
 

ta condition est fausse : sortie sera toujours égale à 1 quoi que tu rentres ! un peu de logique enfin...
 
si tu rentres 1, alors les tests (choix != 2), (choix != 3)et  (choix != 4) seront vrais, et sortie sera égale à 1, etc...
 
met plutot ceci :
 
sortie = ((choix !=  1) && (choix != 2) && (choix != 3) && (choix != 4));
 
ça devrait aller mieux si tu veux que sortie soit égale à 1 si tu rentres une valeur différente de 1,2,3 ou 4.
 
Ou mieux : sortie = (choix > 4);
 
edit: grilled


Message édité par Harkonnen le 16-02-2003 à 21:01:46
n°310880
Taz
bisounours-codeur
Posté le 16-02-2003 à 21:02:41  profilanswer
 

Code :
  1. int choix, res;
  2. do
  3. {
  4.   res=scanf("%d", &choix);
  5.   if(res==EOF)
  6.   {
  7.     // erreur d'E/S ou EOF
  8.     // il faut peut etre arreter le programme  
  9.   }
  10.   // si(res!=1)
  11.   // l'utilisateur n'a pas tapé un entier
  12. while(res!=1 || (choix<1 || choix>4));


 
c'est plutot un problème d'algo  

n°310891
lordankou
Posté le 16-02-2003 à 21:18:52  profilanswer
 

Harkonnen a écrit :

ta condition est fausse : sortie sera toujours égale à 1 quoi que tu rentres ! un peu de logique enfin...
 
si tu rentres 1, alors les tests (choix != 2), (choix != 3)et  (choix != 4) seront vrais, et sortie sera égale à 1, etc...
 
met plutot ceci :
 
sortie = ((choix !=  1) && (choix != 2) && (choix != 3) && (choix != 4));
 
ça devrait aller mieux si tu veux que sortie soit égale à 1 si tu rentres une valeur différente de 1,2,3 ou 4.
 
Ou mieux : sortie = (choix > 4);
 
edit: grilled


 
merci ça marche now !!!! merci beaucoup !!!


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  problème de logique

 

Sujets relatifs
Gros probleme de feuille de style avec Netscape 4 (Linux)[Java]Problème de compilation avec Jext et java en ligne de commande
Piti problème[java] probleme de serialisation
[HTML] Probleme tableau + images pour faire un cadre[C] Probleme de #define...
probleme d'addition(noob);Petit problème de logique entre tables en Access
problème d'opérateur logiqueProbleme de Logique Mathemathiques Y a des Matheux ici ?
Plus de sujets relatifs à : problème de logique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR