第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.解题思路:由于编程能力较弱,所以在了解和借鉴了一些别人的关于四则运算的编写思路之后,解决了输入以及运算问题,进而解决输出问题。

每个功能的重点/难点:功能一:运算数为整数且不含小括号的四则运算,运算优先级问题。 

                                       功能二:在功能一的基础上支持了小括号,带括号的运算优先级问题。

编程收获:编程的思想得到了拓广,编程能力获得了一定的提高

展示重要代码片断:

功能一:

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

功能二: 

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--;
        }
View Code

3.结对编程的体会:结对编程更有助于学习彼此的经验,同时也使得学习效率更高,完成任务的时间可以相对的来说减少一点。在结对编程的过程中遇到困难以及不懂的地方能够齐心协力共同克服,相比于一个人来说这样可以迅速的解决问题,而且每个人对于出现的问题的思路看法不一致,也可以使得有思维更广。同时能够增强团队意识,不再是一个人的单打独斗而是两个人一个团队共同努力。

4.收获较大的事件:

(1)出了问题及bug的时候修改

(2)怎样判断运算优先级

(3)输出有限和无限小数的判断

5.结对照片:

 

 

posted @ 2018-11-08 20:25  hero_HR  阅读(253)  评论(1编辑  收藏  举报