Exercice langage C: Devinette

Travail à Faire:

  1. 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é.

     

  2. Affichez également le nombre d'essais effectués.
  3. 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.
  4. Modifiez le programme pour obliger l'utilisateur à entrer une valeur entre 0 et 10.

 


 

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
#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);