结对项目
成员:齐明
github地址:https://github.com/BIT1120161913/terminal
PSP |
Personal Software Process Stages |
ړ预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 120 | 100 |
· Estimate | ·估计任务需要多长时间 | 10080 | |
Development | 开发 | ||
· Analysis | 需求分析(包括学习新技术) | 1440 | 1400 |
· Design Spec | 生成设计文档 | 720 | |
· Design Review | 设计复审 | 720 | |
Coding Standard | 代码规范 | 720 | 720 |
Design | 具体设计 | 720 | 700 |
Coding | 具体编码 | 720 | 1000 |
Code Review | 代码复审 | 720 | 720 |
Test | 测试 | 1440 | 1000 |
Reporting | 报告 | 720 | |
Test Report | 测试报告 | 720 | |
Size Measurement | 计算工作量 | 720 | |
Postmortem & Process Improvement Plan | 总结并题出改进计划 | 720 | |
合计 | 10200 | 5640 |
FILE *fp;//将生成的一千道题写入该文件
int produce(int n);//生成一系列随机数,代表一个表达式里的数字和运算符、括号,存在int数组里
该函数核心代码:
sum = rand() % 7 + 4;//运算符数量 至少4个 sum += sum + 1; for(j = 0; j < sum; j++){ if(j%2 == 0) a[j] = rand()%50 + 1; else a[j] = -1 * (rand()%4 + 1); } if(n == 1){ mid = (rand()%4)*2 + 1; a[mid] = -5; }
a[]存放数字,每个数字表示一个数或一个运算符、括号。
int trans(int sum,int n);//将int数组里的数转化为字符来表示表达式,存放在字符型数组里,以写入文件或输出到屏幕
int transfor(int n);//中缀转后缀表达式,嵌套调用int isp(int a)和int icp(int a);
该函数核心代码:
while(i < n){ if(a[i] >= 0){//如果是数字放入b数组 b[kb++] = a[i]; i++; } else{ g = stack[bottom-1]; if(isp(g) < icp(a[i])){ stack[bottom] = a[i]; bottom++; i++; } else if(isp(g) > icp(a[i])){ bottom--; b[kb++] = stack[bottom]; } else{ bottom--; if(stack[bottom] == -6)//-6为( i++; } } }
b[]存放后缀表达式
double solve(int n);//解后缀表达式
该函数核心代码:
for(i = 0; i < n; i++){ if(b[i] >= 0) stack[top++] = (double)b[i]; else{ y = stack[--top]; x = stack[--top]; switch(b[i]){ case -1:x = x + y;break; case -2:x = x - y;break; case -3:x = x * y;break; case -4:x = x / y;break; case -5:x = pow(x,y);break; } stack[top++] = x; } }
心得:
这个程序比较大,我以前很少写过类似的程序,对我是一个很好的锻炼,虽然性能比较差,可能还有bug,但我觉得我已经尽力而为了。在编程的过程中,为了解决问题,我在网上学了很多知识,也熟悉了一些以往学过但有些生疏的知识。这个程序质量不高,还得怪自己学艺不精,和他人差距太大,还得努力提高。