第一次作业
四则运算题目生成程序
需求分析
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++又有很好的学习。
浙公网安备 33010602011771号