cin ne fonctionne pas - Help please

cin ne fonctionne pas - Help please - C++ - Programmation

Marsh Posté le 06-06-2006 à 04:05:26    

Bonjour
 
J'ai le dernier cin >> qui ne fonctionne pas dans ces lignes d'instructions
plus précisément au niveau du "while (choix >4)"
 
le cout << "\n1. choix1 \n2. choix2 ...  le programme saute le cin et la saisie n'est pas effectuée.
 
Please help,
 
Thanks,
 
 
void traiterP(){
 
  char Emet =  -1;
  int choix = 999;
 
  do{
  // Saisie des parametres
  cout << "\nEntrez nombre " ;
  cin >> adresseEmet;
 
   
  } while (Emet < 1 || Emet > 255);
 
 
 
    while (choix >4){
 
   cout << "\n1. choix1 \n2. choix2 \n3. Choix3  \n4. Terminer" << endl;
   cin >> choix;
 
  }  // while
 
   
 if (choix == 1)
  fonction1();
 if (choix == 2)
                          fonction2();
 else  
  exit (0) ;  
 
 
}
 
hm10

Reply

Marsh Posté le 06-06-2006 à 04:05:26   

Reply

Marsh Posté le 06-06-2006 à 09:28:14    

Tu entres un char et tu test un int.
 
Utilises des string, et fait des comparaisons valables.

Reply

Marsh Posté le 06-06-2006 à 09:29:03    

et utilises des balises [ code ] stp :o

Reply

Marsh Posté le 06-06-2006 à 12:10:25    

_darkalt3_ a écrit :

et utilises des balises [ code ] stp :o


 
Merci pour ton aide  
 
Mais ça revient au même car je dois comparer des valeurs numériques, c'est pourquoi je n'utilise pas de char. Mais je l'ai fait avec un char et il me saute toujours le cin:
Ex :
 
char ad = -1;
 
do {
 
     // Saisie adresse Recepteur  
    cout << "\nEntrez nombre (Intervalle [1 a 255]): ";
    cin >> ad;
 
} while (ad < 1 || ad > 255);
 
Il ne l'exécute pas et passe à travers la boucle

Reply

Marsh Posté le 06-06-2006 à 13:49:43    

'1' == 0x31 == 49 (en ascii)
 
Donc comparer des valeurs numériques entrées au clavier, non, c'est pas si évident.
 
Passe ton code au debugger, ca t'apprendra des choses sur l'execution de ton code.
 
Met un point d'arret dans la boucle et défile le, vérifie la valeur de "ad" au sortir de ta boucle.
 
Et si tu fais du c++, met des string, encore une fois.

Message cité 1 fois
Message édité par _darkalt3_ le 06-06-2006 à 13:50:20
Reply

Marsh Posté le 06-06-2006 à 15:21:33    

NE JAMAIS UTILISER EXIT

Reply

Marsh Posté le 06-06-2006 à 22:18:56    

_darkalt3_ a écrit :

'1' == 0x31 == 49 (en ascii)
 
Donc comparer des valeurs numériques entrées au clavier, non, c'est pas si évident.
 
Passe ton code au debugger, ca t'apprendra des choses sur l'execution de ton code.
 
Met un point d'arret dans la boucle et défile le, vérifie la valeur de "ad" au sortir de ta boucle.
 
Et si tu fais du c++, met des string, encore une fois.


 
 
Salut  
 
Je te remercie bien mais le problème était à un autre niveau
C'est que j'avais un cin avant et mon buffer ne se vidait pas
J'ai utilisé l'instruction suivante et tout fonctionne bien.
 
 cin.clear();
 cin.ignore(1024, '\n');
 
Thanks
 
hm


---------------
HM
Reply

Marsh Posté le 06-06-2006 à 23:30:32    

je vois pas l'interet de faire cin.clear(), faut d'abord controller si les saisies sont valides
 
pour le cin.ignore tu specifier 'std::numeric_limits<std::streamsize>::max()' comme limite si tu veux eviter de mettre un nombre magique
 

Citation :

C'est que j'avais un cin avant et mon buffer ne se vidait pas


oui, si tu ne lis pas ce qu'il ya dedans

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed