Corrigé de la séance d'exercices 2, Programmation I
Sciences et Technologies du Vivant, Semestre 1

Exercice 1 - Correction d'erreurs de programmation

#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
  float yyy, ymultipliepar2;
      
  yyy = 4;
  ymultipliepar2 = yyy * 2;

  cout << "2 yyyy = " << ymultipliepar2 << endl;

  return 0;
}

Exercice 2 - Table de multiplications

  1. Pour afficher la table complète de 5, il suffit de recopier plusieurs fois la ligne cout "5 multiplie par 1 vaut " << 5 * 1 << endl;, en changeant à chaque fois la valeur du facteur de 1 à 10.
  2. Il faut tout d'abord déclarer une variable n de type entier afin de stocker la valeur dont on doit afficher la table de multiplication. Après la déclaration de variable, on peut demander à l'utilisateur d'entrer une valeur. Ceci s'effectue à l'aide des commandes cin et cout. Il s'agit ensuite de modifier les lignes d'affichage de la table. Il faudra remplacer la constante 5 par la variable n. Remarquez que si vous remplacez 5 par n à l'intérieur de la chaîne de caractères, le programme affichera le caractère n et non pas la valeur de la variable n. Pour que le programme se déroule correctement, il faut donc sortir n de la chaîne de caractères.

    Exemple: cout << "n multiplie par 1 vaut " << n * 1 << endl; est incorrect, alors que cout << n << " multiplie par 1 vaut " << n * 1 << endl; est correct.

#include <iostream>

using namespace std;

int main(int argc, char **argv)
{
  int n = 0;
  
  cout << "Entrez le numero de la table a afficher: ";
  cin >> n;

  cout << n << " multiplie par 1 vaut " << n * 1 << endl;
  cout << n << " multiplie par 2 vaut " << n * 2 << endl;
  cout << n << " multiplie par 3 vaut " << n * 3 << endl;
  cout << n << " multiplie par 4 vaut " << n * 4 << endl;
  cout << n << " multiplie par 5 vaut " << n * 5 << endl;
  cout << n << " multiplie par 6 vaut " << n * 6 << endl;
  cout << n << " multiplie par 7 vaut " << n * 7 << endl;
  cout << n << " multiplie par 8 vaut " << n * 8 << endl;
  cout << n << " multiplie par 9 vaut " << n * 9 << endl;
  cout << n << " multiplie par 10 vaut " << n * 10 << endl;

  return 0;
}

Exercice 3 - Calcul de moyenne

  1. Le programme fourni a déjà déclaré les variables pour stocker les notes et la moyenne. Le code pour stocker la première note est également écrit. Il faut donc le copier deux fois, en changeant les variable appropriées, afin de demander à l'utilisateur d'entrer les deux autres notes. Ensuite, il suffit d'affecter à la variable moyenne la somme des notes divisée par 3. L'affichage de la moyenne se fait bien entendu à l'aide de la commande cout.

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
      float note1, note2, note3;
      float moyenne;
    
      cout << "Entrez la note 1: ";
      cin >> note1;
    
      cout << "Entrez la note 2: ";
      cin >> note2;
    
      cout << "Entrez la note 3: ";
      cin >> note3;
    
      moyenne = (note1 + note2 + note3) / 3;
      cout << "La moyenne est " << moyenne << endl;
      
      return 0;
    }
    

    1. Dans le programme précédent, nous avions déjà déclaré 4 variables. Il suffit donc d'en rajouter une pour la quatrième note et de procéder de la même manière.

      #include <iostream>
      
      using namespace std;
      
      int main(int argc, char **argv)
      {
        float note1, note2, note3, note4;
        float moyenne;
      
        cout << "Entrez la note 1: ";
        cin >> note1;
      
        cout << "Entrez la note 2: ";
        cin >> note2;
      
        cout << "Entrez la note 3: ";
        cin >> note3;
      
        cout << "Entrez la note 4: ";
        cin >> note4;
      
        moyenne = (note1 + note2 + note3 + note4) / 4;
        cout << "La moyenne est " << moyenne << endl;
        
        return 0;
      }
      

    2. Pour n'utiliser que 2 variables, il ne faut pas stocker chaque note dans une variable, mais utiliser une variable somme initialisée à 0, et qui contiendra la somme de toutes les notes. Chaque fois que l'utilisateur entre une note, on la stocke provisoirement dans une variable note et on l'ajoute à la somme. Finalement, on calcule la moyenne en divisant simplement la somme par le nombre de notes (4).

      #include <iostream>
      
      using namespace std;
      
      int main(int argc, char **argv)
      {
        float somme = 0;
        float note;
      
        cout << "Entrez la note 1: ";
        cin >> note;
        somme += note;
      
        cout << "Entrez la note 2: ";
        cin >> note;
        somme += note;
      
        cout << "Entrez la note 3: ";
        cin >> note;
        somme += note;
      
        cout << "Entrez la note 4: ";
        cin >> note;
        somme += note;
      
        cout << "La moyenne est " << somme / 4 << endl;
        
        return 0;
      }
      

  2. Pour cet exercice, il suffit de bien convertir la somme des notes en float avant de la diviser par le nombre de notes (4).

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char **argv)
    {
      int somme = 0;
      int note;
    
      cout << "Entrez la note 1: ";
      cin >> note;
      somme += note;
    
      cout << "Entrez la note 2: ";
      cin >> note;
      somme += note;
    
      cout << "Entrez la note 3: ";
      cin >> note;
      somme += note;
    
      cout << "Entrez la note 4: ";
      cin >> note;
      somme += note;
    
      cout << "La moyenne est " << float(somme) / 4 << endl;
      
      return 0;
    }
    

Exercice 4 - Résolution d'équation du deuxième degré

La structure de ce programme est classique. Tout d'abord, il convient de demander à l'utilisateur d'entrer les 3 coéfficients a, b et c, toujours à l'aide des commandes cin et cout. Ensuite, le calcul d'une racine peut se faire en une seule opération: (-b+sqrt(b*b-4*a*c))/(2*a). La racine carrée s'effectue à l'aide de la commande sqrt. On remarquera que celle-ci exige un paramètre de type float. Une conversion sera donc peut-être nécessaire. Pour élever un nombre au carré, il suffit de le multiplier par lui-même. Finalement, il convient d'utiliser les parenthèses correctement, de manière à ce que les opération arithmétiques se déroulent bien dans l'ordre voulu.

#include <iostream>
#include <cmath>

using namespace std;

int main(int argc, char **argv)
{
  float a, b, c;

  cout << "Entrez les coefficients:" << endl << "a: ";
  cin >> a;
  cout << "b: ";
  cin >> b;
  cout << "c: ";
  cin >> c;
  
  cout << "Les deux racines sont: " << endl;
  cout << "1) " << (-b + sqrt(b * b - 4 * a * c)) / (2 * a) << endl;
  cout << "2) " << (-b - sqrt(b * b - 4 * a * c)) / (2 * a) << endl;

  return 0;
}

Exercice 5 - Précision

L'ordinateur ne possède pas une précision de calcul infinie. Lorsqu'un nombre excède sa précision, celui-ci est tronqué (i.e. les dernières décimales sont ignorées). Par exemple, si un ordinateur possède une précision de 2 décimales, le résultat de la division $10/3$ sera $0.33$.

La racine carrée en est un exemple classique. La racine carré de 36 est un entier (6). Ainsi, si l'on fait l'opération inverse (élever 6 au carré), on retrouvera la valeur d'origine. Pour 37, par contre, sa racine carrée est un nombre irrationel, qui sera tronqué par l'ordinateur. Si on l'éleve au carré, on ne retrouvera plus 37, mais une valeur légèrement inférieure.

#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char **argv) {
  int i;
  float racine;

  cout << "Entrez un entier: ";
  cin >> i;

  racine = sqrt(i);

  cout << "Erreur d'approximation: " << i - racine * racine << endl;

  return 0;
}

Exercice 6 - Permutations

Pour pouvoir permuter le contenu de plusieurs variables, nous avons besoin d'une variable annexe, que nous appellerons temp. Ensuite, la permutation s'effectue simplement: a ==> temp b ==> a c ==> b temp ==> c

#include <iostream>

using namespace std;

int main(int argc, char **argv) {
  int a, b, c;

  cout << "Entrez la premiere valeur: ";
  cin >> a;
  cout << "Entrez la deuxieme valeur: ";
  cin >> b;
  cout << "Entrez la troisieme valeur: ";
  cin >> c;

  cout << "Les valeurs entrees sont: a = " << a << ", b = " << b << 
    " et c = " << c << endl;

  cout << "Permutation: a ==> b, b ==> c, c ==> a" << endl;

  int temp = a;
  a = c;
  c = b;
  b = temp;

  cout << "Les valeurs permutees sont: a = " << a << ", b = " << b << 
    " et c = " << c << endl;

  return 0;
}

Exercice 7 - Conversion décimal vers binaire

#include <iostream>

using namespace std;

int main(int argc, char **argv) {
  int decimal;

  cout << "Entrez un nombre entier de 0 a 15: ";
  cin >> decimal;

  cout << decimal % 2 << endl;
  decimal = decimal / 2;

  cout << decimal % 2 << endl;
  decimal = decimal / 2;

  cout << decimal % 2 << endl;
  decimal = decimal / 2;

  cout << decimal % 2 << endl;

  return 0;
}


Retour