• 软工第三次作业


    要求0

    作业地址:【https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266

    要求1

    git地址:https://git.coding.net/Soloversion/f4.git

    要求2

    结对同学博客地址:https://www.cnblogs.com/yuetj/p/9929444.html

    结对同学姓名:岳天娇  2016011905 

    解题思路:在拿到这个题后我们两个先对题目的意图进行了分析,理解了题目的意思之后开始尝试编程。但是由于本身水平不高,所以我们选择看看别人的来进行学习,了解了别人的大体思路之后,我们开始自己敲代码。所以应该算是代码学习的过程,在以后我们会慢慢建立起自己的知识体系,来做到自主编程,更少的借鉴他人的代码。

    难点:

    (1)区分每一种情况并做到完美输出

    (2)输入和输出的格式问题

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

    我们在做的时候只完成了功能一和功能二,输入还是有点小问题,功能三还在持续完善中...

    功能一中后缀表达式这一块儿是比较关键的,我们通过研究一位博主的代码,然后自己再进行编写,大体上与那位博主的相同

     1 void suffix(char str[10]) //后缀表达式
     2 {
     3     stack<char>s1;  //运用栈的思想
     4     stack<Number>s2;
     5     int i=0,j=0;
     6     for(i=0;str[i]!='';i++)
     7     {
     8         if(str[i]>='0'&&str[i]<='9')
     9         {
    10             Number num;
    11             num.a=0;
    12             num.b=0;
    13             while(str[i]<='9'&&str[i]>='0')
    14             num.a=(str[i++]-'0')+num.a*10;
    15             s2.push(num);   
    16             i--;
    17         }
    18         else
    19         {
    20             if(str[i]==')')
    21             {
    22                 while(s1.top()!='(')
    23                 {
    24                     Number num;
    25                     num.b=1;
    26                     num.a=s1.top();
    27                     s2.push(num);
    28                     s1.pop();
    29                 }
    30                 s1.pop();
    31             }
    32             else if(s1.empty()||s1.top()=='('||str[i]=='(')
    33             {
    34                 s1.push(str[i]);
    35             }
    36             else
    37             {
    38                 if((str[i]=='*'||str[i]=='/')&&(s1.top()=='+'||s1.top()=='-'))
    39                 s1.push(str[i]);
    40                 else
    41                 {
    42                     Number num;
    43                     num.b=1;
    44                     num.a=s1.top();
    45                     s2.push(num);
    46                     s1.pop();
    47                     i--;
    48                 }
    49             }           
    50         }
    51     }

    功能二与功能一相比有了左括号和右括号的插入,情形更加复杂

     1 while(y)
     2         {
     3             if(str[len-2]=='(')  //左括号 
     4             {
     5                 str[len-2]=str[len-1];
     6                 len--;
     7             }
     8             else if(str[len-3]=='(')
     9             {
    10                 str[len-3]=str[len-2];
    11                 str[len-2]=str[len-1];
    12                 len--;
    13             }
    14             else
    15             str[len++]=')';    //右括号 
    16             y--;
    17         }

    结对编程的体会:三个臭皮匠赛过诸葛亮,结对编程让我们更有了彼此相互加油和完成下去的动力,让我们尽最大的努力去完成这次作业。同时在遇到困难时,不再是一个人的战斗,而是可以和队友一起讨论,在这个过程中也就产生了许多新的想法和结对办法,让工作效率也能有所提高。

    三项记忆较深的事情:

    (1)出了问题之后和队友一起debug的时候;

    (2)当通过那个博主知道可以运用栈这个知识点的时候;

    (3)有限和无限小数的判断,括号的匹配问题等等;

    (4)在这个过程中又重新温习了一些C++的知识点

    结对照片:

  • 相关阅读:
    广商14级软件工程团队第一次冲刺相关问题
    Github团队开发示例(二)
    广商14级软件工程团队作业分数
    Github团队开发示例(一)
    《Head First 设计模式》之装饰者模式
    《Head First 设计模式》之观察者模式
    《Head First 设计模式》之策略模式
    AD域登录验证
    广商14级软件工程:助教总结
    广商14级软件工程分数:第十四回合
  • 原文地址:https://www.cnblogs.com/fuys605/p/9925128.html
Copyright © 2020-2023  润新知