第一次作业

四则运算题目生成程序

 

个人作业1——四则运算题目生成程序(基于控制台)

需求分析

 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++又有很好的学习。

原文地址:https://www.cnblogs.com/zxb630866690/p/7575219.html