结对项目(自动生成四则运算题目程序)
Posted vigor-0726
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对项目(自动生成四则运算题目程序)相关的知识,希望对你有一定的参考价值。
一、Github项目地址:https://github.com/Vigor-creat/-.git
项目成员:胡兆禧 3118005092 余金龙 3118005116
二.PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 30 | 48 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 120 | 140 |
· Design Spec | · 生成设计文档 | 55 | 50 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
· Design | · 具体设计 | 240 | 420 |
· Coding | · 具体编码 | 900 | 1658 |
· Code Review | · 代码复审 | 300 | 405 |
· Test | · 测试(自我测试,修改代码,提交修改) | 200 | 180 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 60 | 65 |
· Size Measurement | · 计算工作量 | 60 | 70 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 120 | 40 |
合计 | 2145 | 3116 |
三、效能分析
10道题目,运算符个数最大为3,数值100以内,生成并计算需要157.548s
由于程序实现过程中运用了随机函数,但c语言的随机数函数的时间种子无法在短暂的时间内变动,为使得每次调用随机数函数产生的值不同,不得已加入sleep()函数,导致程序运行时间增加。
四、设计实现过程
五、代码说明
1.四则运算表达式生成和计算程序代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 #include<stack> 5 #include<windows.h> 6 7 8 9 using std::stack; 10 //计算算术表达式 11 int ch2num ( const char &ch ) //读取运算符 12 { 13 int num ( -1 ); 14 switch ( ch ) 15 { 16 case‘#‘: 17 num = 0; 18 break; 19 case‘+‘: 20 num = 1; 21 break; 22 case‘-‘: 23 num = 2; 24 break; 25 case‘*‘: 26 num = 3; 27 break; 28 case‘/‘: 29 num = 4; 30 break; 31 case‘(‘: 32 num = 5; 33 break; 34 case‘)‘: 35 num = 6; 36 break; 37 } 38 return num; 39 } 40 41 int operator_2 ( const int &num1, const int &num2, const char &ch ) //进行单个运算符的运算 42 { 43 int num ( -1 ); 44 switch ( ch ) 45 { 46 case‘+‘: 47 num = num2 + num1; 48 break; 49 case‘-‘: 50 num = num2 - num1; 51 break; 52 case‘*‘: 53 num = num2 * num1; 54 break; 55 case‘/‘: 56 num = num2 / num1; 57 break; 58 } 59 return num; 60 } 61 62 int compare[5][6] = { { 0 }, { 1, 0, 0, 0, 0, 1 }, { 1, 0, 0, 0, 0, 1 }, { 1, 1, 1, 0, 0, 1 }, { 1, 1, 1, 0, 0, 1 } }; //创建一个二维数组记录运算符之间的优先级 63 64 int Calculation ( char *str, int i ) //计算算术表达式主体函数 65 { 66 stack<int>S_num; //创建两个栈存放数值和运算符 67 stack<char>S_ch; 68 while ( !S_ch.empty() ) 69 S_ch.pop(); 70 S_ch.push ( ‘#‘ ); 71 while ( !S_num.empty() ) 72 S_num.pop(); 73 int tnum ( 0 ); 74 for ( int i ( 0 ); str[i] != ‘