📄 state.c
字号:
#include<stdio.h>
#include<stdlib.h>
#define A 10
#define B 20
#define D 40
#define AB 1020
#define BA 2010
#define BD 2040
#define DB 4020
#define AD 1040
#define DA 4010
#define AA 1010
#define act1 1
#define act2 2
struct statepoint
{
int atstate;
int event;
int nextstate;
int action;
};
struct statepoint currentpoint;
struct statepoint statemachine[4];
int tablelookup(int state,int event)
{
int i;int nextstate;
for(i=0;i<4;i++)
{
if(state==statemachine[i].atstate && event==statemachine[i].event)
{
nextstate=statemachine[i].nextstate;
currentpoint.nextstate=statemachine[i].nextstate;
currentpoint.action=statemachine[i].action;
}
return(nextstate);
}
}
printtable()
{
printf("%d %d %d\n",statemachine[0].atstate,statemachine[0].event,
statemachine[0].nextstate,statemachine[0].action );
printf("%d %d %d\n",statemachine[1].atstate,statemachine[1].event,
statemachine[1].nextstate,statemachine[1].action);
printf("%d %d %d\n",statemachine[2].atstate,statemachine[2].event,
statemachine[2].nextstate,statemachine[2].action);
printf("%d %d %d\n",statemachine[3].atstate,statemachine[3].event,
statemachine[3].nextstate,statemachine[3].action);
}
machineinit()
{
statemachine[0].atstate=A;
statemachine[0].nextstate=D;
statemachine[1].atstate=A;
statemachine[1].nextstate=B;
statemachine[2].atstate=D;
statemachine[2].nextstate=B;
statemachine[3].atstate=B;
statemachine[3].nextstate=D;
statemachine[0].event=AD;
statemachine[1].event=AB;
statemachine[2].event=DB;
statemachine[3].event=BA;
statemachine[0].action=act1;
statemachine[1].action=act1;
statemachine[2].action=act1;
statemachine[3].action=act2;
printtable();
}
main()
{
int i;
machineinit();
printf("what state?");
scanf("%d,¤tpoint.atstate");
printf("The state is %d\n",currentpoint.atstate);
printf("what event?");
scanf("%d",¤tpoint.event);
printf("The event is %d\n",currentpoint.event);
for(i=1;i<=5;i++)
{
currentpoint.nextstate=tablelookup(currentpoint.atstate,currentpoint.event);
currentpoint.atstate=currentpoint.nextstate;
printtable();
scanf("%d",¤tpoint.event);
printf(" Incoming event is %d \n",currentpoint.event);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -