Menu
Coddy logo textTech

Récapitulatif : Dispatcher de calculatrice

Fait partie de la section Programmation Orientée Objet du Journey C de Coddy. Leçon 37 sur 61.

challenge icon

Défi

Facile

Créez une calculatrice à l’aide d’une table de dispatch. Vous allez créer un tableau de pointeurs de fonctions 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 renvoie un int
  2. Définit quatre fonctions arithmétiques :
    • add : renvoie a + b
    • sub : renvoie a - b
    • mul : renvoie a * b
    • divide : renvoie a / b (division entière)
  3. Dans main, crée une table de dispatch : un tableau de 4 pointeurs de fonctions Operation, où l’indice 0 correspond à add, l’indice 1 à sub, l’indice 2 à mul et l’indice 3 à divide
  4. Lit trois entrées : deux entiers et un code d’opération (0-3)
  5. Utilise le code d’opération comme indice dans la table de dispatch et appelle 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 entier unique : 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, donc nous calculons 10 - 3 = 7.

L’idée essentielle est d’utiliser l’indexation d’un 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};

Appelez ensuite la fonction avec : 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 répartition (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 Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur C en ligne