題目描述編程
本次做業要求將四則運算的核心部分採起棧的知識進行解決。即表達式生成的合法性檢驗、表達式結果計算。函數
學習C++界面編程,能夠學QT、MFC或者VS,選擇其一便可,用博客記錄學習到的知識以及心得體會。學習
本次做業中將四則運算中的核心部分用棧的知識解決,最開始的程序已經實現,由於還經過逆波蘭式實現,這裏我就貼出後面經過棧計算逆波蘭式的代碼。.net
/*根據逆波蘭式,求出表達式的值,放到私有成員value中。結果若是是整數,則返回整數。若是不是整數,返回FALSE。*/ int Expression::ExpressionValue() { Stack s; int size = reversePolishNotation.length(); int num1, num2;//由於有用#表明10,就先用int存 int i; for (i = 0; i < size; i++) { switch (reversePolishNotation[i]) { case'+': num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num1 + num2); break; case'-': num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num2 - num1); break; case'*': num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num1 * num2); break; case'/': num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); //只有作除法時可能出現答案爲非整數的狀況 if (num2%num1 == 0) { s.push(num2 / num1); } else { return FALSE; } break; case'#'://數值10 s.push(10); break; default://其餘數值 s.push(reversePolishNotation[i] - '0'); break; } } value = s.top(); return value; }
而後對於界面編程的學習,由於以前一直在作PTA的做業,感受此次做業有些些比平時的多了一些,比較趕,因此界面編程只是學習了一小部分,具體的尚未實現。我學習的是MFC實現,首先是VS上必須先安裝MFC界面編程須要的插件。
主要步驟分爲如下幾步:
1.建立一個基於對話框的MFC項目插件
2.以後對於控件以及其餘的設置:
添加控件-設置控件設計
3.控件消息響應函數具體代碼部分添加code
具體的代碼我還未能實現,以後會補上。
推薦MFC界面編程的博客blog
感想:在棟哥的帶領下一步一步的朝真正的程序設計師方向前進get