设为首页 加入收藏

TOP

C语言实现有限自动机FSM(三)
2013-10-17 09:05:35 来源: 作者: 【 】 浏览:362
Tags:语言 实现 有限 动机 FSM

 

  void action1(state mystate,condition myconditon);

  void action2(state mystate,condition myconditon);

  void action3(state mystate,condition myconditon);

  void actiontrap(state mystate,condition myconditon);

  trasition t1={

  STATE2,action1

  };

  trasition t2={

  STATE3,action2

  };

  trasition t3={

  STATE2,action3

  };

  trasition tt={

  STATETRAP,actiontrap

  };

  void action1(state mystate,condition myconditon){

  printf("action1 one triggered\n");

  }

  void action2(state mystate,condition myconditon){

  printf("action2 one triggered\n");

  }

  void action3(state mystate,condition myconditon){

  printf("action3 one triggered\n");

  }

  void actiontrap(state mystate,condition myconditon){

  printf("actiontrap one triggered\n");

  }

  ptrasition transition_table[STATENUM][CONDITIONS] = {

  /*      c1,  c2*/

  /* s1 */&t1, &tt,

  /* s2 */&tt, &t2,

  /* s3 */&t3, &tt,

  /* st */&tt, &tt,

  };

  typedef struct

  {

  state current;

  } StateMachine, * pStateMachine;

  state step(pStateMachine machine, condition mycondition)

  {

  ptrasition t = transition_table[machine->current][mycondition];

  (*(t->action))(machine->current, mycondition);

  machine->current = t->next;

  printf("the current state is %d\n",t->next );

  return machine->current;

  }

  int main(int argc, char *argv[])

  {

  StateMachine mymachine;

  mymachine.current=STATE1;

  int mycon;

  char ch;

  while(1){

  scanf("%d",&mycon);

  step(&mymachine,mycon);

  }

  return 0;

  }

        

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇string类的正确简明写法 下一篇C语言中常数的数据类型

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: