zoukankan      html  css  js  c++  java
  • 软工第三次作业

    要求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++的知识点

    结对照片:

  • 相关阅读:
    有点忙啊
    什么是协程
    HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
    HDU 1155 Bungee Jumping(物理题,动能公式,弹性势能公式,重力势能公式)
    HDU 1210 Eddy's 洗牌问题(找规律,数学)
    HDU1214 圆桌会议(找规律,数学)
    HDU1215 七夕节(模拟 数学)
    HDU 1216 Assistance Required(暴力打表)
    HDU 1220 Cube(数学,找规律)
    HDU 1221 Rectangle and Circle(判断圆和矩形是不是相交)
  • 原文地址:https://www.cnblogs.com/fuys605/p/9925128.html
Copyright © 2011-2022 走看看