#include <stdio.h>
typedef enum STATE_ID {
INIT,
LOAD,
EXECUTE,
EXIT,
NUM_STATES
} State_ID_t;
State_ID_t state_init() { printf("Init"); return LOAD;}
State_ID_t state_load() { printf("Load"); return EXECUTE;}
State_ID_t state_execute() { printf("Execute"); return EXIT;}
State_ID_t state_exit() { printf("Exit"); return INIT;}
typedef struct {
State_ID_t state_id;
State_ID_t (*state_action) (void);
} State_t;
static const State_t states[NUM_STATES] = {
{INIT, state_init},
{LOAD, state_load},
{EXECUTE, state_execute},
{EXIT, state_exit}
};
// Your logic here
void run_state_sequence(int start) {
State_ID_t current_state = (State_ID_t) start;
// Implement using function pointer array
for (int i =0; i <3; i++) {
current_state = states[current_state].state_action();
printf("\n");
}
}
int main() {
int start;
scanf("%d", &start);
run_state_sequence(start);
return 0;
}
Input
0
Expected Output
Init Load Execute