c++有限状态机如何实现计算器小程序

  介绍

小编这次要给大家分享的是c++有限状态机如何实现计算器小程序,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

<强>实现的功能

    <李>支持整数,小数输入李 <>李支持+ - */四则运算李 <>李CE清除当前操作数 <李> C清除所有,回到初始状态李 <>李回显操作数和结果
      李,

<强> HSM状态图

计算器可以分为七种状态:首先,Operand_1, Negate_1,运营商Operand_2, Negate_2,错误。其中开始,Operand_1, Operand_1状态又分了几种子状态。下面简要的介绍下状态状态转换的过程:

    <李>启动软件,进入开始状态李 <李>当用户点击1 - 9,0,点按钮,软件进入Operand_1状态。 <李>当用户点击+,-,*,/按钮,软件进入运营商状态。 <李>此时当用户再次点击1 - 9,0,点按钮,软件进入Operand_2状态。 <李>如果用户点击=按钮,软件就进入了开始状态。 <李>如果此时进行的是除法运算且除数为0,软件进入错误状态,用户只有点击C按钮才可以跳出。
      李,

在实际开发的过程中,我们只需要关心现在程序处在什么状态,可以进行什么样的操作,然后就是状态转换的条件要处理下。

 C + +有限状态机如何实现计算器小程序

<强>代码片段

下面是CalculatorDlg。cpp中的一段代码,我们首先要获得当前的状态,然后进行相应的操作,操作完成之后设置好对应的状态。

空白CalculatorDlg:: enterOperation(计算器::CalcOp歌剧院)
  {
  如果(m_calculator.getCurrentState()==计算器:CalcState::错误)
  {
  返回;
  }
  如果(m_calculator.getCurrentState()==计算器:CalcState::开始| |
  m_calculator.getCurrentState()==计算器:CalcState: Negate_1 | |
  m_calculator.getCurrentState()==计算器:CalcState:: Operand_1)
  {
  m_calculator.setOperand_1 (_wtof (m_output));
  }
  else if (m_calculator.getCurrentState()==计算器::CalcState:: Operand_2 | |
  m_calculator.getCurrentState()==计算器:CalcState:: Negate_2)
  {
  m_calculator.setOperand_2 (_wtof (m_output));
  UpdateData(真正的);
  std:: stringstream党卫军;
  党卫军& lt; & lt;m_calculator.getResult ();
  .c_str m_output=ss.str () ();
  UpdateData(假);
  m_calculator.setCurrentState(计算器::CalcState::开始);
  m_calculator.setOperand_1 (m_calculator.getResult ());
  }
  m_calculator.setCurrentState(计算器::CalcState::操作符);
  m_calculator.setOperator (③);
  }

运行效果展示

 C + +有限状态机如何实现计算器小程序

看完这篇关于c++有限状态机如何实现计算器小程序的文章,如果觉得文章内容写得不错的话,可以把它分享出去给更多人看到。

c++有限状态机如何实现计算器小程序