Menu
Coddy logo textTech

Podsumowanie: wybór działania kalkulatora

Część sekcji Programowanie obiektowe ścieżki C w Coddy. Lekcja 37 z 61.

challenge icon

Wyzwanie

Łatwy

Zbuduj kalkulator za pomocą tabeli dyspozycji. Utworzysz tablicę wskaźników do funkcji, która mapuje kody operacji na odpowiadające im funkcje, a następnie użyjesz jej do wykonywania obliczeń.

Napisz program, który:

  1. Tworzy typedef o nazwie Operation dla wskaźnika do funkcji, która przyjmuje dwa parametry typu int i zwraca wartość typu int
  2. Definiuje cztery funkcje arytmetyczne:
    • add: zwraca a + b
    • sub: zwraca a - b
    • mul: zwraca a * b
    • divide: zwraca a / b (dzielenie całkowite)
  3. W funkcji main tworzy tabelę dyspozycji: tablicę 4 wskaźników do funkcji typu Operation, gdzie indeks 0 wskazuje na add, indeks 1 na sub, indeks 2 na mul, a indeks 3 na divide
  4. Odczytuje trzy wartości wejściowe: dwie liczby całkowite i kod operacji (0-3)
  5. Używa kodu operacji jako indeksu tabeli dyspozycji i wywołuje odpowiednią funkcję
  6. Wyświetla wynik

Otrzymasz trzy wartości wejściowe: pierwszą liczbę, drugą liczbę i kod operacji (0 oznacza add, 1 oznacza sub, 2 oznacza mul, 3 oznacza divide).

Wynikiem powinna być jedna liczba całkowita: rezultat operacji:

7

W tym przykładzie dla danych wejściowych 10, 3, 1 kod operacji 1 wybiera sub z tabeli dyspozycji, więc obliczamy 10 - 3 = 7.

Kluczowe jest tu użycie indeksowania tablicy do wyboru funkcji: nie są potrzebne instrukcje if ani switch. Tabela dyspozycji powinna wyglądać tak:

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

Następnie wywołaj funkcję za pomocą: ops[code](a, b)

Spróbuj swoich sił

#include <stdio.h>

// TODO: Utwórz typedef o nazwie 'Operation' dla wskaźnika do funkcji
// która przyjmuje dwa parametry typu int i zwraca int


// TODO: Zdefiniuj cztery funkcje arytmetyczne: add, sub, mul, divide


int main() {
    // Wczytaj dane wejściowe
    int a, b, code;
    scanf("%d", &a);
    scanf("%d", &b);
    scanf("%d", &code);
    
    // TODO: Utwórz tablicę dyspozycyjną (tablicę 4 wskaźników do funkcji typu Operation)
    // Operation ops[4] = { ... };
    
    // TODO: Użyj kodu operacji, aby wywołać odpowiednią funkcję
    // i zapisz wynik
    int result;
    
    // Wyświetl wynik
    printf("%d\n", result);
    
    return 0;
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C online