真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++有限狀態(tài)機(jī)如何實(shí)現(xiàn)計(jì)算器小程序-創(chuàng)新互聯(lián)

小編這次要給大家分享的是C++有限狀態(tài)機(jī)如何實(shí)現(xiàn)計(jì)算器小程序,文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

成都創(chuàng)新互聯(lián)公司主營(yíng)振興網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件定制開發(fā),振興h5小程序開發(fā)搭建,振興網(wǎng)站營(yíng)銷推廣歡迎振興等地區(qū)企業(yè)咨詢

實(shí)現(xiàn)的功能

  • 支持整數(shù)、小數(shù)輸入
  • 支持+ - * / 四則運(yùn)算
  • CE 清除當(dāng)前操作數(shù)
  • C 清除所有、回到初始狀態(tài)
  • 回顯操作數(shù)和結(jié)果
     

HSM狀態(tài)圖

計(jì)算器可以分為七種狀態(tài):Start、Operand_1、Negate_1、Operator、Operand_2、Negate_2、Error。其中Start、Operand_1、Operand_1狀態(tài)又分了幾種子狀態(tài)。 下面簡(jiǎn)要的介紹下狀態(tài)狀態(tài)轉(zhuǎn)換的過(guò)程:

  • 啟動(dòng)軟件,進(jìn)入Start狀態(tài)
  • 當(dāng)用戶點(diǎn)擊1-9、0、Point按鈕,軟件進(jìn)入Operand_1 狀態(tài)。
  • 當(dāng)用戶點(diǎn)擊+、-、*、/按鈕,軟件進(jìn)入Operator狀態(tài)。
  • 此時(shí)當(dāng)用戶再次點(diǎn)擊1-9、0、Point按鈕,軟件進(jìn)入Operand_2 狀態(tài)。
  • 如果用戶點(diǎn)擊=按鈕,軟件就進(jìn)入了Start狀態(tài)。
  • 如果此時(shí)進(jìn)行的是除法運(yùn)算且除數(shù)為0,軟件進(jìn)入Error狀態(tài),用戶只有點(diǎn)擊C按鈕才可以跳出。
     

在實(shí)際開發(fā)的過(guò)程中,我們只需要關(guān)心現(xiàn)在程序處在什么狀態(tài),可以進(jìn)行什么樣的操作。然后就是狀態(tài)轉(zhuǎn)換的條件要處理下。

C++有限狀態(tài)機(jī)如何實(shí)現(xiàn)計(jì)算器小程序

代碼片段

下面是CalculatorDlg.cpp中的一段代碼,我們首先要獲得當(dāng)前的狀態(tài),然后進(jìn)行相應(yīng)的操作,操作完成之后設(shè)置好對(duì)應(yīng)的狀態(tài)。

void CalculatorDlg::enterOperation(Calculator::CalcOp oper)
{
 if (m_calculator.getCurrentState() == Calculator::CalcState::Error)
 {
  return;
 }
 if (m_calculator.getCurrentState() == Calculator::CalcState::Start ||
  m_calculator.getCurrentState() == Calculator::CalcState::Negate_1 ||
  m_calculator.getCurrentState() == Calculator::CalcState::Operand_1)
 {
  m_calculator.setOperand_1(_wtof(m_output));
 }
 else if (m_calculator.getCurrentState() == Calculator::CalcState::Operand_2 ||
  m_calculator.getCurrentState() == Calculator::CalcState::Negate_2)
 {
  m_calculator.setOperand_2(_wtof(m_output));
  UpdateData(TRUE);
  std::stringstream ss;
  ss << m_calculator.getResult();
  m_output = ss.str().c_str();
  UpdateData(FALSE);
  m_calculator.setCurrentState(Calculator::CalcState::Start);
  m_calculator.setOperand_1(m_calculator.getResult());
 }
 m_calculator.setCurrentState(Calculator::CalcState::Operator);
 m_calculator.setOperator(oper);
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)題目:C++有限狀態(tài)機(jī)如何實(shí)現(xiàn)計(jì)算器小程序-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/hopos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部