Switch Case_Encadrer les erreurs de l'utilisateur

Fermé
phube008 Messages postés 8 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 24 mai 2015 - 27 oct. 2013 à 21:29
GrandCaribou Messages postés 28776 Date d'inscription mardi 23 décembre 2008 Statut Modérateur Dernière intervention 19 novembre 2024 - 27 oct. 2013 à 21:33
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 28776 Date d'inscription mardi 23 décembre 2008 Statut Modérateur Dernière intervention 19 novembre 2024 1 036
27 oct. 2013 à 21:33
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