Plusieurs soucis avec ton code:
- Èvite les using namespace, voir:
[ Lien ]
- Try.. catch ne sert pas à attraper ce genre d'erreur. Il n'attrape que ce qui est lancé par un throw.
- Un nombre à virgule entre dans un nombre entier. Tout ce qu'il y a après la virgule sera perdu, mais ça ne provoque pas d'erreur. Si un utilisateur entre 45.6, on lui affichera 45.
- Si un utilisateur entre "abcd", alors ton programme va déconner parce que ça n'entre pas dans un int.
Pour gérer toutes ces erreurs, tu peux faire comme ceci:
Code C/C++ :
#include <iostream>
#include <limits>
int main()
{
int nb1 = 0;
while (nb1 == 0)
{
std::cout << "Entrez un chiffre entre 1 et 100 svp : ";
std::cin >> nb1;
if (std::cin.fail() || nb1 < 0 || nb1 > 100)
{
nb1 = 0;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
std::cout << nb1 << std::endl;
return 0;
}
A noter que si tu veux vraiment dire à l'utilisateur "Pas de nombre à virgule svp", tu sera obligé d'utiliser la technique proposée par louis14, et utilise un std::string.
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question