天天看點

第3次作業-四則運算

要求0:

作業位址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266】

要求1:

git倉庫位址:https://git.coding.net/Soloversion/f4.git

要求2:

1.結對同學部落格位址:https://www.cnblogs.com/fuys605/p/9925128.html

結對同學名字:付一爽 2016011898

2.解題思路:由于程式設計能力較弱,是以在了解和借鑒了一些别人的關于四則運算的編寫思路之後,解決了輸入以及運算問題,進而解決輸出問題。

每個功能的重點/難點:功能一:運算數為整數且不含小括号的四則運算,運算優先級問題。 

                                       功能二:在功能一的基礎上支援了小括号,帶括号的運算優先級問題。

程式設計收獲:程式設計的思想得到了拓廣,程式設計能力獲得了一定的提高

展示重要代碼片斷:

功能一:

第3次作業-四則運算
第3次作業-四則運算

void suffix(char str[10])
{
    stack<char>s1;
    stack<Number>s2;
    int i=0,j=0;
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]>='0'&&str[i]<='9')
        {
            Number num;
            num.a=0;
            num.b=0;
            while(str[i]<='9'&&str[i]>='0')
            num.a=(str[i++]-'0')+num.a*10;
            s2.push(num);   
            i--;
        }
        else
        {
            if(str[i]==')')
            {
                while(s1.top()!='(')
                {
                    Number num;
                    num.b=1;
                    num.a=s1.top();
                    s2.push(num);
                    s1.pop();
                }
                s1.pop();
            }
            else if(s1.empty()||s1.top()=='('||str[i]=='(')
            {
                s1.push(str[i]);
            }
            else
            {
                if((str[i]=='*'||str[i]=='/')&&(s1.top()=='+'||s1.top()=='-'))
                s1.push(str[i]);
                else
                {
                    Number num;
                    num.b=1;
                    num.a=s1.top();
                    s2.push(num);
                    s1.pop();
                    i--;
                }
            }           
        }
    }
    while(!s1.empty())
    {
        Number num;
        num.b=1;
        num.a=s1.top();
        s2.push(num);
        s1.pop();
    }
    while(!s2.empty())
    {
        s3.push(s2.top());
        s2.pop();
    }
}      

View Code

功能二: 

第3次作業-四則運算
第3次作業-四則運算
while(y)
        {
            if(str[len-2]=='(')  //左括号 
            {
                str[len-2]=str[len-1];
                len--;
            }
            else if(str[len-3]=='(')
            {
                str[len-3]=str[len-2];
                str[len-2]=str[len-1];
                len--;
            }
            else
            str[len++]=')';    //右括号 
            y--;
        }      

3.結對程式設計的體會:結對程式設計更有助于學習彼此的經驗,同時也使得學習效率更高,完成任務的時間可以相對的來說減少一點。在結對程式設計的過程中遇到困難以及不懂的地方能夠齊心協力共同克服,相比于一個人來說這樣可以迅速的解決問題,而且每個人對于出現的問題的思路看法不一緻,也可以使得有思維更廣。同時能夠增強團隊意識,不再是一個人的單打獨鬥而是兩個人一個團隊共同努力。

4.收獲較大的事件:

(1)出了問題及bug的時候修改

(2)怎樣判斷運算優先級

(3)輸出有限和無限小數的判斷

5.結對照片:

第3次作業-四則運算