#include <stdio.h> void state_init() { printf("Init"); } void state_load() { printf("Load"); } void state_execute() { printf("Execute"); } void state_exit() { printf("Exit"); } // Your logic here void swap(void *arr[],int start,int end){ while(start<end){ void *temp=arr[start]; arr[start]=arr[end]; arr[end]=temp; start++; end--; } } void run_state_sequence(int start) { // Implement using function pointer array void (*arr[])(void)={state_init,state_load,state_execute,state_exit}; int n=4; if (start > 0) { swap((void**)arr, 0, start - 1); swap((void**)arr, start, n - 1); swap((void**)arr, 0, n - 1); } for (int i = 0; i < 3; i++) { arr[i](); printf("\n"); } } int main() { int start; scanf("%d", &start); run_state_sequence(start); return 0; }
Test Cases
Test Results
Input
0
Expected Output
Init Load Execute