第六次課程做業

第六次課程做業

題目描述編程

本次做業要求將四則運算的核心部分採起棧的知識進行解決。即表達式生成的合法性檢驗、表達式結果計算。函數

學習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

相關文章
相關標籤/搜索