Exercice langage C: For, if et booléens

Travail à Faire:

Compléter le programme suivant aux endroits indiqués par // ... pour que les deux affichages apres la boucle for soient corrects. Exécutez plusieurs fois le programme pour tirer des nombres aléatoires différents et tester les différents cas.

Comment écrire le programme sans utiliser de if dans la boucle for ?

 

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
#include 
#include 
#include 
using namespace std;

int main(int argc, char **argv) {
  bool au_moins_un_nombre_superieur_a_90;
  bool aucun_nombre_inferieur_a_10;

  srand(time(0));

  // ...
  for(int i = 0; i < 10; i++) {
    int r = rand() % 100;
    cout << r << ", ";

    // ...
  }
  cout << endl;

  if (au_moins_un_nombre_superieur_a_90)
    cout << "Au moins un des nombres est superieur a 90." << endl;

  if (aucun_nombre_inferieur_a_10)
    cout << "Aucun nombre n'est inferieur a 10." << endl;
}

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
#include 
using namespace std;

int main(int argc, char **argv) {
  bool au_moins_un_nombre_superieur_a_90;
  bool aucun_nombre_inferieur_a_10;

  srand(time(0));

  au_moins_un_nombre_superieur_a_90 = false;
  aucun_nombre_inferieur_a_10       = true;

  for(int i = 0; i < 10; i++) {
    int r = rand() % 100;
    cout << r << ", ";

    // version avec des if:
    if (r > 90)
      au_moins_un_nombre_superieur_a_90 = true;
    if (r < 10)
      aucun_nombre_inferieur_a_10 = false;

    // version sans les if:
    au_moins_un_nombre_superieur_a_90 = au_moins_un_nombre_superieur_a_90 || (r > 90);
    aucun_nombre_inferieur_a_10       = aucun_nombre_inferieur_a_10 && (r >= 10);
  }
  cout << endl;

  if (au_moins_un_nombre_superieur_a_90)
    cout << "Au moins un des nombres est superieur a 90." << endl;

  if (aucun_nombre_inferieur_a_10)
    cout << "Aucun nombre n'est inferieur a 10." << endl;
}