四则运算题目生成程序
需求分析
1、控制运算表达式题目数量,控制题目中数值的大小
2、题目中存在分数形式要进行约分
3、运算符个数不能超过3个
4、不能出现重复题目,即两个运算表达式的计算步骤不能完全相同
5、程序支持生成10000道题目
6、程序同时支持计算生成的每道题目,并对结果进行约分
7、对用户所做答案进行判断,并且输出正确答案或错误答案
功能设计
基本功能
1、随机生成运算表达式
2、重复题目查询
3、四则运算计算功能
4、对运算表达式中数值和对计算结果进行约分
设计实现
1、根据随机生成2个数值进行合成,产生一个分数,如果是分数要进行约分,和随机生成运算符,组成一个只有两个运算符的表达式
2、表达式中存在除法,并且除法后面是括号,则要判断括号内结果不能为0,即除数不能为0,如7÷(3-3)这是不符合的,要重新生成题目
3、四则运算表达式计算,分为有括号和无括号,有括号先计算括号内,无括号按四则运算法则运算
4、将所有的数值都转为分数形式,整数分母为1,在分别取出分子和分母,方便后面做分数计算
5、重复题目判断,只有两个运算符只进行两步,先判断结果是否相同,再比较第一步骤运算是否完全相同,如果存在括号第一步即为计算括号内的,取出括号内的运算符和数值;无括号则按运算法则取出第一步运算过程中运算符和数值。比较运算是否相同,相同再比较数值,是否存在完全相同的数值,都满足,则这两道题目重复
代码说明
使用C++编写,源代码所存位置:https://coding.net/u/zxb6308/p/work01/git
下面是时间预估PSP:
PSP2.1 |
Personal Software Process Stages |
Time Senior Student |
Time |
Planning |
计划 |
1h |
1h |
· Estimate |
估计这个任务需要多少时间 |
7天 |
6天 |
Development |
开发 |
5天 |
5天 |
· Analysis |
需求分析 (包括学习新技术) |
2h |
1.5h |
· Design Spec |
生成设计文档 |
1h |
1h |
· Design Review |
设计复审 |
1h |
3h |
· Coding Standard |
代码规范 |
4h |
4h |
· Design |
具体设计 |
1天 |
1天 |
· Coding |
具体编码 |
4天 |
4天 |
· Code Review |
代码复审 |
5h |
4h |
· Test |
测试(自我测试,修改代码,提交修改) |
3h |
5h |
Reporting |
报告 |
4h |
3h |
· |
测试报告 |
3h |
2h |
· |
计算工作量 |
10分钟 |
0 |
· |
并提出过程改进计划 |
1h |
30分钟 |
这是约分和分数合成的代码,主要是传入2个随机数,先进行约分化简,再合成分数(字符串类型),在返回
string fraction(int num1, int num2) { char buff[50] = ""; int t, z; string str; if (num1 % num2 == 0) { sprintf(buff, "%d", num1 / num2); str += buff; return str; } for (int i = 9; i>1; i--) { if (num1%i == 0 && num2%i == 0) { num1 = num1 / i; num2 = num2 / i; } } if (num1>num2) { t = num1 / num2; z = num1 - t*num2; sprintf(buff, "%d'%d/%d", t, z, num2); str += buff; } else { sprintf(buff, "%d/%d", num1, num2); str += buff; } return str; }
下面是一些运行结果:
控制台
Answer.txt文件:
Exercises.txt文件
Grade.txt文件
10000道题目生成测试的Exercises.txt和Answer.txt文件:
这次作业大体上是完成了,但还是有些不足,查重只能比较2个式子是否完全一样,
但是通过这次作业我对C++又有很好的学习。