Information

Author(s) Magali Legast
Deadline Καμία προθεσμία
Submission limit No limitation

Συνδεθείτε

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. Considérons un tableau qui contient des pointeurs vers des fonctions de type int f(int x, int y). Dans cet exercice, vous devez écrire une fonction maxf qui applique toutes les fonctions du tableau aux arguments x et y et retourne le résultat maximum obtenu. Cette fonction maxf reçoit comme arguments le tableau de fonctions et les deux entiers x et y.

Le syllabus est accessible depuis l'URL https://sites.uclouvain.be/SyllabusC/notes/Theorie/index.html

Les pages de manuel sont accessibles depuis les URLs suivants :

Attention: veuillez utiliser la version HTML du syllabus


Question 1: Corps de la fonction maxf

Pour illustrer cette fonction maxf, considérons un tableau contenant les fonctions add, sub and multiply :

int add(int x, int y) { return x+y; }
int sub(int x, int y) { return x-y; }
int multiply(int x, int y) { return x*y; }

Pour ce tableau et les valeurs x=2 et y=6, la fonction maxf retourne la valeur 12. Pour des valeurs de x et y de respectivement 3 et -2, la valeur de retour sera 5. Si vous le souhaitez, vous pouvez réimplémenter ces fonctions pour les utiliser dans vos tests.

La fin du tableau est indiquée par la présence de la valeur NULL.

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

/*
 * @table : pointeur vers le premier élément du tableau contenant les fonctions à comparer
 * @x : premier élément à donner en argument aux fonctions
 * @y : deuxième  élément à donner en argument aux fonctions
 *
 * @pre table!=NULL, table[0]!=NULL (le tableau contient au moins 1 fonction), le dernier élément du tableau est NULL
 * @post applique toutes les fonctions contenues dans {table} à {x} et {y} et retourne la valeure maximale obtenue
 */
int maxf(int (**table)(int,int), int x, int y){
Question 2: Fonctions supplémentaires

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

Question 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) {