Séance d'exercices 4, Programmation I
Sciences et Technologies du Vivant, Semestre 1

Remarques

Exercice 1 - Tests d'égalité (*)

Ecrivez un programme qui demande trois valeurs entières à l'utilisateur, et affiche, le cas échéant, un de ces cinq messages:

  1. Les 3 valeurs sont egales;
  2. Seules les 2 premieres valeurs sont egales;
  3. Seules les 2 dernieres valeurs sont egales;
  4. Seules la premiere et la troisieme valeurs sont egales;
  5. Les 3 valeurs sont differentes.

Comment écrire le programme en n'utilisant que quatre instructions if (et quatre else) et pas d'opérateurs logiques?

Exercice 2 - Cluedo (*)

Le but de cet exercice est d'écrire un programme posant des questions à l'utilisateur pour trouver à quel personnage pense l'utilisateur. Le programme ne peut poser que des questions dont la réponse est oui ou non (on supposera que l'utilisateur répondra aux questions du programme par 0 pour non, et 1 pour oui). Les 5 personnages possibles sont: Mlle Rose, le Professeur Violet, le Colonel Moutarde, le Révérend Olive et Mme Leblanc. Seul le Colonel Moutarde a des moustaches, tous portent des lunettes sauf Mlle Rose, et le Professeur Violet est le seul à avoir un chapeau.

Écrivez le programme pour qu'il n'utilise que 4 instructions if (et autant de else que nécessaire). Comment écrire le programme pour qu'il trouve la bonne réponse après 3 questions au maximum ?

Exercice 3 - Devinette

  1. Reprenez le programme de la séance précédente qui

    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.

Exercice 4 - Suite de Syracuse

La suite de Syracuse repose sur un principe simple. Prenez un nombre au hasard:

Renouvellez cette opération plusieurs fois. Après suffisamment d'itérations, vous devriez finir par tomber sur la valeur 1. Par exemple, à partir de 17, on trouve la suite de valeurs: 52 26 13 40 20 10 5 16 8 4 2 1.

  1. Ecrivez un programme qui demande un nombre à l'utilisateur, et qui affiche les valeurs successives de la suite de Syracuse relative à ce nombre, en s'arrêtant bien sûr à 1.

  2. Ajoutez le calcul du nombre d'itérations: le programme devra afficher combien d'itérations ont été nécessaires pour parvenir à 1.

  3. Modifiez votre programme pour qu'il affiche le nombre d'itérations nécessaires pour parvenir à 1, non plus pour le nombre entré par l'utilisateur, mais pour les 10 premiers entiers:
          1: 0 iterations.
          2: 1 iterations.
          3: 7 iterations.
          4: 2 iterations.
          5: 5 iterations.
          6: 8 iterations.
          7: 16 iterations.
          8: 3 iterations.
          9: 19 iterations.
          10: 6 iterations.
    

Exercice 5 - For, if et booléens

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 ?

#include <iostream>
#include <stdlib.h>
#include <time.h>
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;
}

Exercice 6 - Calcul de volume

Ecrivez un programme qui permet à l'utilisateur de calculer le volume de différentes primitives géométriques. Votre programme devra afficher:

De quelle primitive voulez-vous calculer le volume ? Tapez:
1 pour une sphere
2 pour un parallelepipede rectangle
3 pour un cylindre

Utilisez pour cela l'instruction switch.

Exercice 7 - Nombre inversé ($\dag $)

Calculez le nombre lu à rebours d'un nombre positif entré au clavier. Exemple: Entrée: 1234 Affichage: 4321.


Retour