Exercice langage C: Fonctions simples

Travail à Faire:

Pour tester les fonctions suivantes, appelez-les dans la fonction main de votre programme:

  1. Ecrivez une fonction min2 qui reçoit deux arguments de type float et retourne le plus petit d'entre eux. Le type de retour devra donc être float.
  2. Ecrivez une fonction min3 qui prend trois arguments de type int et retourne le plus petit d'entre eux. Comment utiliser la fonction min2 du point précédent pour écrire le corps de min3 en une ligne ?
  3. Ecrivez une fonction arrondi qui prend un argument de type float et retourne l'argument arrondi à deux décimales.
  4. Ecrivez une fonction traduction qui prend en argument un entier entre 0 et 6 et l'affiche à l'écran en toutes lettres (zeroun, ..., six). Quelles sont les différences entre cette fonction et les précédentes ?

 


 

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
float min2(float a, float b) {
  if (a < b)
    return a;
  else
    return b;
}
Pour calculer le minimum de 3 nombres, on peut, par exemple, calculer d'abord le minimum des 2 premiers, et ensuite calculer le minimum de ce résultat et du dernier nombre. Comme on a déjà écrit une fonction retournant le minimum de 2 nombres au point précédent, on peut donc la réutiliser.
int min3(int a, int b, int c) {
  return int(min2(min2(a, b), c));
}
Pour arrondir un nombre à 2 décimales, il suffit de le multiplier par 100, le convertir en int, le reconvertir en float et le diviser par 100, comme nous l'avions vu à la série 2. Lorsqu'on divise 2 nombres, si l'un d'entre eux est un float, le compilateur effectuera une division réelle. Dans le corrigé, on écrit la constante 100 100.0 afin que le compilateur la considère comme une constante float, ce qui nous évite de faire la conversion explicite.
float arrondi(float a) {
  return int(a * 100) / 100.0;
}
Il n'y pas d'autre manière que de fournir un texte particulier pour chaque nombre. La fonction peut aussi s'écrire avec des ifs.
void traduction(int n) {
  switch (n) {
  case 0:
    cout << "zero";
    break;
  case 1:
    cout << "un";
    break;
  case 2:
    cout << "deux";
    break;
  case 3:
    cout << "trois";
    break;
  case 4:
    cout << "quatre";
    break;
  case 5:
    cout << "cinq";
    break;
  case 6:
    cout << "six";
    break;
  }
}