1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| #include <iostream>
using namespace std;
double get_double(const string & query)
{
double ret;
// vidage de cin
cin.clear();
// affichage écran
cout << query.c_str() << endl;
// conversion
while (!(cin >> ret)) {
// si l'utilisateur n'a pas rentré un nombre correct,
// on commence par vider cin
cin.clear();
cin.ignore(numeric_limits < streamsize >::max(), '\n');
// puis on relance get_double qui va vider cin et rafficher le message.
return get_double(query);
}
// la conversion a réussi. on vide cin pour éviter
// que les saisies comme "1 2 3" soient valides
cin.clear();
cin.ignore(numeric_limits < streamsize >::max(), '\n');
return ret;
}
double entree()
{
double cote1, cote2, cote3;
cote1 = get_double("Entrez le premier nombre.");
cote2 = get_double("Entrez le deuxième nombre.");
cote3 = get_double("Entrez le troisième nombre.");
return cote1 * cote2 * cote3;
}
int main()
{
double f = entree();
cout << "f: " << f << endl;
return 0;
} |