Switch Case_Encadrer les erreurs de l'utilisateur

Fermé
phube008 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
GrandCaribou Messages postés 28793 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis débutant en C++ (2 mois de programmation).
J'ai un programme qui doit utiliser seulement #include <iostream>.
J'essai de trouver un moyen d'encadrer les erreurs de l'utilisateur si ce dernier entre une valeur autre qu'un entier pour la robustesse de mon programme.

(copier/coller)

/*
TEST: entrez une lettre ou un nombre fractionnaire au-lieu d'un entier et vous trouverez une boucle infini. Comment faire pour empêcher les boucles infinis si l'utilisateur veut mettre une valeur invalide. EX: entrer (2.3), "m", ou une "double" dans un "int". J'ai pensé à faire une variable char, mais ça n'a pas été concluant.

Est-ce que c'est impossible à cause des limites de notre librairie?
*/

// Voici le code à améliorer
//-------------------------------------------------------------------------------
#include <iostream>
using namespace std;


int main()
{
int choix = 0, min =1 ,max=5;


do
{
// Demander et redemander après l'affichage du choix
cout << "Entrez un nombre ENTIER entre 1 et 5" << endl;
cin >> choix;


if (choix>=1 && choix<= 5) // Vérifier si choix est un entier? while (choix == (int)choix)?
{
switch (choix)
{


case 1 :


cout << "Votre choix est 1"<< endl;
break;


case 2 :


cout << "Votre choix est 2"<< endl;
break;


case 3 :


cout << "Votre choix est 3"<< endl;
break;


case 4 :


cout << "Votre choix est 4"<< endl;
break;


default :


cout << "Votre choix est 5"<< endl;
break;
}
cout << endl;
}
// Sortie du IF
else
{
cout << "Choix INVALIDE"<< endl;
}
}while (choix>=1 || choix <=5);


system("pause");
}
// Merci! J'attends vos commentaires.
A voir également:

1 réponse

GrandCaribou Messages postés 28793 Date d'inscription   Statut Modérateur Dernière intervention   1 037
 
Bonjour,

Veuillez s'il vous plait rester sur votre message initial afin de permettre la bonne compréhension de la discussion que vous avez déjà entamée. Sinon, on ne peut pas suivre la conversation et on ne comprend plus rien !

https://forums.commentcamarche.net/forum/affich-28983832-switch-case-mal-concu-avec-boucle-infini

Pour ce faire, utilisez le bouton "Répondre" et non "Posez votre question".

Merci à vous
Grand Caribou, modérateur CCM
0