要求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]!=‘\0‘;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++的知识点
结对照片:
原文:https://www.cnblogs.com/fuys605/p/9925128.html