Challenge

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

#include <stdio.h>

#include <stdlib.h>

enum states {GEAR_DOWN, CHECKING_BEFORE_TAKEOFF, RAISING_GEAR, GEAR_UP, CHECKING_BEFORE_LANDING, LOWERING_GEAR};

enum events {GEAR_UP_BUTTON_PRESSED, GEAR_DOWN_BUTTON_PRESSED, GEAR_LOCKED_DOWN, GEAR_LOCKED_UP, GEAR_NOT_LOCKED_DOWN, GEAR_NOT_LOCKED_UP};

static void Gear_Down(void) {

printf("Gear Down\n");

}

static void Checking_Before_Takeoff(void) {

printf("Checking Before Takeoff\n");

}

static void Raising_Gear(void) {

printf("Raising Gear\n");

}

static void Gear_Up(void) {

printf("Gear Up\n");

}

static void Checking_Before_Landing(void) {

printf("Checking Before Landing\n");

}

static void Lowering_Gear(void) {

printf("Lowering Gear\n");

}

static void (*state_table []) (void)= {Gear_Down,Checking_Before_Takeoff,Raising_Gear,Gear_Up,Checking_Before_Landing,Lowering_Gear};

int main() {

int event;

int state = GEAR_DOWN;

while (1) {

state_table[state]();

printf("Enter event: ");

scanf("%d", &event);

switch (state) {

case GEAR_DOWN:

if (event == GEAR_UP_BUTTON_PRESSED) state = CHECKING_BEFORE_TAKEOFF;

break;

case CHECKING_BEFORE_TAKEOFF:

if (event == GEAR_LOCKED_UP) state = RAISING_GEAR;

else if (event == GEAR_NOT_LOCKED_DOWN) state = GEAR_DOWN;

break;

case RAISING_GEAR:

if (event == GEAR_LOCKED_UP) state = GEAR_UP;

else if (event == GEAR_NOT_LOCKED_UP) state = LOWERING_GEAR;

break;

case GEAR_UP:

if (event == GEAR_DOWN_BUTTON_PRESSED) state = CHECKING_BEFORE_LANDING;

break;

case CHECKING_BEFORE_LANDING:

if (event == GEAR_LOCKED_DOWN) state = LOWERING_GEAR;

else if (event == GEAR_NOT_LOCKED_UP) state = GEAR_UP;

break;

case LOWERING_GEAR:

if (event == GEAR_LOCKED_DOWN) state = GEAR_DOWN;

else if (event == GEAR_NOT_LOCKED_DOWN) state = RAISING_GEAR;

break;

}

}

return 0;

}


OUTPUT:

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.