Challenge

Project 2 - Implement the Code for controlling the retraction and extension of Airplane’s landing gear

// Online C compiler to run C program online

#include <stdio.h>

// Step 1: Enum for States

typedef enum {

GEAR_DOWN,

MOVING_UP,

GEAR_UP,

MOVING_DOWN

} GearState;

// Step 2: Enum for Inputs

typedef enum {

SWITCH_UP,

SWITCH_DOWN,

SENSOR_RETRACTED,

SENSOR_EXTENDED,

NO_INPUT

} InputSignal;

// Step 3: FSM Logic

void updateFSM(GearState *currentState, InputSignal input) {

switch (*currentState) {

case GEAR_DOWN:

if (input == SWITCH_UP) {

printf("Transition: GEAR_DOWN → MOVING_UP\n");

*currentState = MOVING_UP;

}

break;

case MOVING_UP:

if (input == SENSOR_RETRACTED) {

printf("Transition: MOVING_UP → GEAR_UP\n");

*currentState = GEAR_UP;

}

break;

case GEAR_UP:

if (input == SWITCH_DOWN) {

printf("Transition: GEAR_UP → MOVING_DOWN\n");

*currentState = MOVING_DOWN;

}

break;

case MOVING_DOWN:

if (input == SENSOR_EXTENDED) {

printf("Transition: MOVING_DOWN → GEAR_DOWN\n");

*currentState = GEAR_DOWN;

}

break;

default:

break;

}

}

// Step 4: Print State

void printState(GearState state) {

switch (state) {

case GEAR_DOWN: printf("Current State: GEAR_DOWN\n"); break;

case MOVING_UP: printf("Current State: MOVING_UP\n"); break;

case GEAR_UP: printf("Current State: GEAR_UP\n"); break;

case MOVING_DOWN: printf("Current State: MOVING_DOWN\n"); break;

}

}

int main() {

GearState state = GEAR_DOWN;

int input;

while (1) {

printState(state);

printf("\nEnter input:\n");

printf("0 - SWITCH_UP\n");

printf("1 - SWITCH_DOWN\n");

printf("2 - SENSOR_RETRACTED\n");

printf("3 - SENSOR_EXTENDED\n");

printf("4 - Exit\n");

printf("Choice: ");

scanf("%d", &input);

if (input == 4) {

printf("Exiting simulation.\n");

break;

}

if (input < 0 || input > 3) {

printf("Invalid input. Try again.\n");

continue;

}

updateFSM(&state, (InputSignal)input);

}

return 0;

}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.