Challenge

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

struct

{

enum{ fsm_BEGIN, fsm_WAIT, fsm_NEXT} state;

char input, output;

} fsm_data;

int fsm_init()

{

fsm_data.state = S_BEGIN;

return 0;

}

int fsm_step()

{

int e=0, f=0, r;

if(fsm_data.input == 'R')

{ r=1;}

else{

r=0;}

switch(fsm_data.state){

case fsm_BEGIN:

fsm_data.output = ' . ' ;

if(fsm_data.input == 'I') { fsm_data.state = fsm_OK; f= f+1; }

if(fsm_data.input != 'H' && fsm_data.input != 'I') {

fsm_data.state= fsm_BEGIN; f=f+1;

}

break;

case fsm_OK:

fsm_data.output = 'H' ;

fsm_data.state = fsm_NEXT;

break;

case fsm_NEXT:

fsm_data.output = 'I';

if(fsm_data.input == 'H') { fsm_data.state = fsm_WAIT; f= f+1; }

if(fsm_data.input != 'H' ) { fsm_data.state = fsm_BEGIN; f= f+1; }

break;

default:

e= -1;

}/* switch*/

if(f >1) { e=f; }

if( r== 1) { fsm_data.state = fsm_BEGIN; }

return e;

}/* fsm_step */

int main() {

int errcod, quit;

fsm_init();

quit =0;

ercod = 0;

while( errcod == 0 && quit ==0 ) {

fsm_data.input = read_input();

if(fsm_data.input == 'Q' ) {

quit = 1;

}

if(quit == 0) {

errcod = fsm_step();

write_output( fsm_data.output);

}/* if not quitting */

}/* while */

return errcod;

}/* main*/

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.

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.