Menu
Coddy logo textTech

Zusammenfassung: Calculator Dispatch

Teil des Abschnitts Objektorientierte Programmierung der C-Journey von Coddy. Lektion 37 von 61.

challenge icon

Aufgabe

Einfach

Erstelle einen Taschenrechner mithilfe einer Dispatch-Tabelle. Du erstellst ein Array von Funktionszeigern, das Operationscodes den entsprechenden Funktionen zuordnet, und verwendest es anschließend zur Durchführung von Berechnungen.

Schreibe ein Programm, das:

  1. einen typedef namens Operation für einen Funktionszeiger erstellt, der zwei int-Parameter entgegennimmt und einen int zurückgibt
  2. vier arithmetische Funktionen definiert:
    • add: gibt a + b zurück
    • sub: gibt a - b zurück
    • mul: gibt a * b zurück
    • divide: gibt a / b zurück (Ganzzahldivision)
  3. in main eine Dispatch-Tabelle erstellt: ein Array aus 4 Funktionszeigern vom Typ Operation, wobei Index 0 auf add, Index 1 auf sub, Index 2 auf mul und Index 3 auf divide verweist
  4. drei Eingaben liest: zwei Ganzzahlen und einen Operationscode (0-3)
  5. den Operationscode verwendet, um die Dispatch-Tabelle zu indizieren und die entsprechende Funktion aufzurufen
  6. das Ergebnis ausgibt

Du erhältst drei Eingaben: die erste Zahl, die zweite Zahl und den Operationscode (0 für add, 1 für sub, 2 für mul, 3 für divide).

Deine Ausgabe sollte eine einzelne Ganzzahl sein: das Ergebnis der Operation:

7

In diesem Beispiel mit den Eingaben 10, 3, 1 wählt der Operationscode 1 sub aus der Dispatch-Tabelle aus, sodass wir 10 - 3 = 7 berechnen.

Der entscheidende Punkt ist die Verwendung der Array-Indizierung zur Auswahl der Funktion: Es werden keine if- oder switch-Anweisungen benötigt. Deine Dispatch-Tabelle sollte so aussehen:

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

Rufe die Funktion anschließend wie folgt auf: ops[code](a, b)

Probier es selbst

#include <stdio.h>

// TODO: Erstelle ein typedef namens 'Operation' für einen Funktionszeiger
// der zwei int-Parameter entgegennimmt und ein int zurückgibt


// TODO: Definiere die vier arithmetischen Funktionen: add, sub, mul, divide


int main() {
    // Eingabe lesen
    int a, b, code;
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &code);
    
    // TODO: Erstelle die Dispatch-Tabelle (Array von 4 Operation-Funktionszeigern)
    // Operation ops[4] = { ... };
    
    // TODO: Verwende den Operationscode, um die entsprechende Funktion aufzurufen
    // und speichere das Ergebnis
    int result;
    
    // Gib das Ergebnis aus
    printf("%d\n", result);
    
    return 0;
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C-Compiler