Thông tin

Tác giả Olivier Bonaventure
Hạn chót Không có hạn chót
Giới hạn nộp bài Không có giới hạn

Đăng nhập

Comparaison de fonctions

Parfois il est intéressant de comparer le résultat de fonctions sans nécessairement savoir quel est le code de ces fonctions. Dans cet exercice, vous devez écrire une fonction compare qui reçoit comme arguments un intervalle fermé et deux pointeurs vers des fonctions qui retournent chacune un entier.


Câu hỏi 1: Corps de la fonction compare

Pour illustrer cette fonction compare, considérons les fonctions identite et abs:

int identite(int x) { return x; }
int abs(int x) {
  if (x>=0)
      return x;
  else
     return -x;
}

Dans l'intervalle [0,2] (min=0, max=2), compare retourne la valeur 3 lorsque elle est appliquée aux fonctions identite et abs. Dans l'intervalle [-1,1] (min=-1, max=1), elle retourne 2 lorsqu'elle est appliquée aux mêmes fonctions.

Proposez le corps de la fonction compare dont la spécification est reprise ci-dessous:

/*
 * @pre min<max, f1!=NULL, f2!=NULL
 * @post applique les fonctions f1 et f2 à tous les entiers dans l'intervalle fermé [min,max]
 *       et retourne le nombre de fois où ces deux fonctions donnent le même résultat
 */
int compare(int min, int max, int f1(int), int f2(int)) {
Câu hỏi 2: Fonctions supplémentaires

Insérez ici les fonctions supplémentaires éventuelles dont vous avez besoin.

Câu hỏi 3: Fonction de test

Insérez votre code de test optionnel ci-dessous. Vous pouvez utiliser printf dans cette fonction pour débugger votre programme.

void test_func(void) {