#include <stdio.h>
void state_init() { printf("Init"); }
void state_load() { printf("Load"); }
void state_execute() { printf("Execute"); }
void state_exit() { printf("Exit"); }
void run_state_sequence(int start) {
// Function pointer array for 4 states
void (*fsm[4])() = { state_init, state_load, state_execute, state_exit };
// Execute 3 states in sequence starting from 'start'
for (int i = 0; i < 3; i++) {
int index = (start + i) % 4; // Wrap around with modulo
fsm[index]();
if(i < 2){
printf("\n");
}
}
}
int main() {
int start;
scanf("%d", &start);
run_state_sequence(start);
return 0;
}
✅ This pattern is widely used in firmware state machines, command handlers, and timed sequences.
Input
0
Expected Output
Init Load Execute