Exercice langage C: Devinette
Rédigé par GC Team, Publié le 16 Mars 2012, Mise à jour le Lundi, 07 Novembre 2022 11:06![](/images/thumb/45/default.png)
Travail à Faire :
- Reprenez le programme de la séance précédente qui
- choisit un nombre au hasard entre 0 et 10;
- demande à l'utilisateur d'entrer une valeur;
- affiche un message indiquant alors si la valeur entrée est trop petite, trop grande, ou si l'utilisateur a trouvé la bonne valeur.
Modifiez ce programme pour qu'il demande une nouvelle valeur tant que l'utilisateur n'a pas trouvé.
- Affichez également le nombre d'essais effectués.
- Modifiez le programme pour qu'il s'arrête au bout de cinq essais si l'utilisateur n'a pas trouvé, et affiche la valeur qu'il fallait deviner.
- Modifiez le programme pour obliger l'utilisateur à entrer une valeur entre 0 et 10.
#include
#include
using namespace std;
int main(int argc, char **argv)
{
int random, guess;
int trials = 0;
srand(time(0));
random = rand() % 11; // choisir un nombre aleatoire entre 0 et 10
cout << "J'ai choisi un nombre entre 0 et 10. Essayez de le deviner." << endl;
do {
cout << "Entrez un nombre entre 0 et 10: ";
cin >> guess;
if (guess < 0 || guess > 10) // nombre en dehors des bornes
cout << "Non! " << guess << " n'est pas un nombre entre 0 et 10" << endl;
else {
if (random < guess)
cout << "Mon nombre est plus petit." << endl;
else if (random > guess)
cout << "Mon nombre est plus grand." << endl;
else
cout << "Exact! Mon nombre etait bien " << random << endl;
trials++;
}
cout << trials << " essais" << endl << endl;
} while (guess != random && trials < 5);
if (guess != random) { // echec
cout << "Vous avez effectue 5 essais sans parvenir a deviner." << endl;
cout << "Mon nombre etait: " << random << endl;
}
return 0;
}
Notez que lorsque l'utilisateur entre un nombre en dehors de l'intervalle , on n'incremente pas le compteur trials. On aurait également pu coder ceci de manière similaire à l'exercice précédent:
do {
cout << "Entrez un nombre entre 0 et 10: ";
cin >> guess;
} while (guess >= 0 && guess <= 10);