Command Dispatch Table

#include <iostream>

// Global command functions
void cmdReset() { std::cout << "System Reset" << std::endl; }
void cmdStart() { std::cout << "System Start" << std::endl; }
void cmdStop()  { std::cout << "System Stop" << std::endl; }

int main() {
    // TODO: Define an array of function pointers named 'dispatchTable'
    // It should hold 3 pointers to functions returning void with no args.
    // Initialize it with {cmdReset, cmdStart, cmdStop}.
    
    // Syntax hint: void (*name[])() = { ... };
    void (*dispatchTable[])() = {cmdReset, cmdStart, cmdStop};
    
    int N;
    if (!(std::cin >> N)) return 0;

    for (int i = 0; i < N; ++i) {
        int cmdID;
        std::cin >> cmdID;

        // TODO: Check bounds (0 <= cmdID < 3)
        // If valid, call the function from the array: dispatchTable[cmdID]();
        if(cmdID >= 0 && cmdID < 3) {
            dispatchTable[cmdID]();
        }
        // Else, print "Invalid Command"
        else {
            std::cout << "Invalid Command" << std::endl;
        }
    }
    return 0;
}
Upvote
Downvote
Loading...

Input

3 1 0 5

Expected Output

System Start System Reset Invalid Command