Menu
Coddy logo textTech

Récapitulatif : Dispatcher de calculatrice

Fait partie de la section Object Oriented Programming du Journey C de Coddy — leçon 37 sur 61.

challenge icon

Défi

Facile

Construisez une calculatrice en utilisant une table de dispatch (dispatch table). Vous allez créer un tableau de pointeurs de fonction qui associe des codes d'opération à leurs fonctions correspondantes, puis l'utiliser pour effectuer des calculs.

Écrivez un programme qui :

  1. Crée un typedef appelé Operation pour un pointeur de fonction qui prend deux paramètres int et retourne un int
  2. Définit quatre fonctions arithmétiques :
    • add — retourne a + b
    • sub — retourne a - b
    • mul — retourne a * b
    • divide — retourne a / b (division entière)
  3. Dans main, crée une table de dispatch : un tableau de 4 pointeurs de fonction Operation, où l'indice 0 est add, l'indice 1 est sub, l'indice 2 est mul, et l'indice 3 est divide
  4. Lit trois entrées : deux entiers et un code d'opération (0-3)
  5. Utilise le code d'opération pour indexer la table de dispatch et appeler la fonction appropriée
  6. Affiche le résultat

Vous recevrez trois entrées : le premier nombre, le second nombre, et le code d'opération (0 pour add, 1 pour sub, 2 pour mul, 3 pour divide).

Votre sortie doit être un seul entier — le résultat de l'opération :

7

Dans cet exemple avec les entrées 10, 3, 1 : le code d'opération 1 sélectionne sub dans la table de dispatch, nous calculons donc 10 - 3 = 7.

La clé ici est d'utiliser l'indexation de tableau pour sélectionner la fonction — aucune instruction if ou switch n'est nécessaire. Votre table de dispatch devrait ressembler à ceci :

Operation ops[4] = {add, sub, mul, divide};

Ensuite, appelez la fonction en utilisant : ops[code](a, b)

Essayez vous-même

#include <stdio.h>

// TODO: Créer un typedef appelé 'Operation' pour un pointeur de fonction
// qui prend deux paramètres int et retourne un int


// TODO: Définir les quatre fonctions arithmétiques : add, sub, mul, divide


int main() {
    // Lire l'entrée
    int a, b, code;
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &code);
    
    // TODO: Créer la table de dispatch (tableau de 4 pointeurs de fonction Operation)
    // Operation ops[4] = { ... };
    
    // TODO: Utiliser le code d'opération pour appeler la fonction appropriée
    // et stocker le résultat
    int result;
    
    // Afficher le résultat
    printf("%d\n", result);
    
    return 0;
}

Toutes les leçons de Object Oriented Programming