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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] probleme dans la validation du choix d'un menu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] probleme dans la validation du choix d'un menu

n°619521
titounne
Posté le 22-01-2004 à 23:06:47  profilanswer
 

Bonjour,
 
Voila je debute en C++ (mais bon j'ai deja fait du C, du java et d'autre..) et j'ai un petit probleme sur la validation de la saisie d'un choix dans un menu.
 
voici le code
 

Code :
  1. void main()
  2. {
  3. const int nbItem=3;
  4. int choix;
  5. std::string *item = new std::string[nbItem];
  6. item[0] = "choix1";
  7. item[1] = "choix2";
  8. item[2] = "choix3";
  9. choix = menu(item, nbItem);
  10. std::cout<<choix;
  11. }
  12. int menu (std::string *item, int nbItem)
  13. {
  14. int i;
  15. int choix;
  16. choix = 0;  //initialisation pour entrer dans la boucle
  17. for (i=0; i<=nbItem-1; i++)
  18. {
  19.  std::cout<<i<<" - "<<item[i]<<std::endl;
  20. }
  21. // si une lettre probleme... voir pourquoi
  22. while ((choix <=0) || (choix>nbItem))
  23. {
  24.  std::cout<<"Saisiez votre choix entre 1 et "<<nbItem<<":"<<std::endl;
  25.  std::cin>>choix;
  26.  std::cin.clear(); //purge le buffer d'entrée
  27. }
  28. return (choix);
  29. }


 
Donc voila, si je saisie un int hors intervalle, pas de probleme je boucle comme il faut.
En revanche si je saisie un caractere, la c'est la catastrophe... En effet, je revient bien dans ma boucle et mon message d'invite de saisie s'affiche, mais ça ne me rend jamais la main et ça affiche le message en bouvle (infinie)...  
 
Si quelqu'un a deja eu le meme probleme et l'a resolu merci de me venir en aide.
 


---------------
Des images
mood
Publicité
Posté le 22-01-2004 à 23:06:47  profilanswer
 

n°619529
Kristoph
Posté le 22-01-2004 à 23:14:49  profilanswer
 

As tu déjà manipulé la fonction scanf en C ? Si oui, le problème est exactement le même. Si non, repart voir tes cours de C :D En fait, si tu entres qq chose qui ne peut pas être parsé en int, ce caractère incorrect reste dans le tampon d'entrée malgré tout.
 
PS : tu utilises les std::string, c'est bien. Alors pourquoi tu utilises des std::string[] avec en plus le paramètre nbItem à te trimbaler ? Utilise les std::vector pour simplifier ton code.

n°619537
titounne
Posté le 22-01-2004 à 23:22:52  profilanswer
 

Kristoph a écrit :

As tu déjà manipulé la fonction scanf en C ? Si oui, le problème est exactement le même. Si non, repart voir tes cours de C :D En fait, si tu entres qq chose qui ne peut pas être parsé en int, ce caractère incorrect reste dans le tampon d'entrée malgré tout.


En effet avec scanf je voit le truc...
Mais la justement avec le srd::cin.clear() je pensais que ça vidait mon buffer d'entrée... et donc que ben le caractere ne devrait pas rester dans le tampon...
j'suis perdue...  
 
 

Citation :

PS : tu utilises les std::string, c'est bien. Alors pourquoi tu utilises des std::string[] avec en plus le paramètre nbItem à te trimbaler ? Utilise les std::vector pour simplifier ton code.


En effet j'ai pas penser au std::vector... je debute sorry :)


---------------
Des images

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

  [C++] probleme dans la validation du choix d'un menu

 

Sujets relatifs
Probleme apache et script cgi : impossible d'excuter du cgi[openGL] un menu qui apparait en appuyant sur Echap
problème de \VB+ WMI problème list
[javascript] menu deroulant REPONDUProbleme d'ecriture d'un regex.
Problème d'affichage d'une variable[publipostage word OLE] : problème étrange
Envoyer vers une page selon le choix dans une boite de dialoguePHP&Mysql : problème de retour à la ligne (bibliothèque JS Overblib)
Plus de sujets relatifs à : [C++] probleme dans la validation du choix d'un menu


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