Jump to content

[C++] Menu qui entre dans une boucle infinie.


Recommended Posts

Bonjour!

Je tente de réaliser un programme pour mon cours d'info et j'ai un petit soucis. J'aimerais faire un menu tout ce qu'il y a de plus simple.

Au départ, j'avais ceci:

Le problème : ça cycle si on rentre un char (ex : a)

double test;
do
{
       cout << "Voulez-vous commencer?" << endl
            << "1- Oui." << endl << "2- Non." << endl;
       cin >> test;

} while (commencer != 1 && commencer != 2);

J'ai tenté de modifier, maintenant j'ai ça:

int commencer;
   char menu; 

   do
   {
       cout << "Voulez-vous commencer?" << endl
            << "1- Oui." << endl << "2- Non." << endl;
       cin >> menu;

       commencer=(menu-'0'); 

   } while (commencer != 1 && commencer != 2);

On peut rentrer ce qu'on veut, mais un seul caractère! Est-ce qu'il serait possible que lorsque je tape : aa, le programme considère qu'il s'agit d'un seul caractère et pas de deux.

En fait il garde le deuxième pour le prochain cin j'ai l'impression.

Merci de votre aide :)

Link to comment
Share on other sites

En c, le système garde un buffer d'entrée (stdin).

Si tu ne lis que le premier caractère, le reste de la saisie y est stocké.

Pour éviter ce problème, il faut réaliser un fflush( stdin) afin de vider le buffer d'entrée.

Après, je te laisse chercher comment ça se fait en C++, sinon tu vas oublier pour ton prochain partiel ;-)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...