结对作业
这个作业属于哪个课程 | 计科22级12班 |
---|---|
这个作业要求在哪里 | 作业要求 |
这个作业的目标 | 结对编程 |
姓名 | 学号 | Github |
---|---|---|
热合米图拉 | 3122004463 | Github仓库地址 |
PSP 2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时 |
---|---|---|---|
Planning | 计划 | 30 | 35 |
Estimate | 估计这个任务需要多少时间 | 30 | 40 |
Development | 开发 | 120 | 150 |
Analysis | 需求分析 (包括学习新技术) | 30 | 30 |
Design Spec | 生成设计文档 | 20 | 30 |
Design Review | 设计复审 | 15 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 45 |
Design | 具体设计 | 30 | 35 |
Coding | 具体编码 | 170 | 180 |
Code Review | 代码复审 | 20 | 30 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 75 |
Reporting | 报告 | 40 | 55 |
Test Report | 测试报告 | 30 | 35 |
Size Measurement | 计算工作量 | 15 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 15 |
合计 | 510 | 675 |
题目要求
题目:实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)。
说明:
- 自然数:0, 1, 2, …。
真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, …。
运算符:+, −, ×, ÷。
括号:(, )。
等号:=。
分隔符:空格(用于四则运算符和等号前后)。
算术表达式:
e = n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e),
其中e, e1和e2为表达式,n为自然数或真分数。
四则运算题目:e = ,其中e为算术表达式。
项目文件结构
主要功能执行逻辑
执行
执行之后所得到的结果(10道算题)
程序报告
一、程序功能概述
利用C++编写了这次程序,程序的主要功能是生成一系列简单的数学表达式,并验证这些表达式的合法性。程序会根据用户输入的题目数目生成相应数量的表达式,并输出那些计算结果在0到100之间的有效表达式。
二、主要功能模块
-
表达式求值 (
calc
函数)- 根据给定的字符串表达式进行计算。
- 支持加、减、乘、除四种基本运算。
- 返回计算结果或非法输入标志
inf
。
-
初始化变量 (
init
函数)- 随机生成三个整数
a
,b
,c
和两个运算符op1
,op2
。 - 用于每次生成新的表达式。
- 随机生成三个整数
-
表达式合法性检查 (
valid
函数)- 检查生成的表达式是否合法,即其计算结果是否在0到100之间。
- 返回布尔值表示是否合法。
-
多运算符处理 (
multiop
函数)- 确保两个运算符不相同,以生成更复杂的表达式。
-
主程序逻辑 (
main
函数)- 接收用户输入的题目数量。
- 循环生成并检查表达式,直到达到指定数量为止。
- 输出有效的表达式及其计算结果。
三、程序特点
- 随机性:通过
rand()
函数生成随机数来确保每次运行程序时生成的表达式都是不同的。 - 有效性检查:通过
valid
函数确保只有合法的表达式才会被输出,增加了程序的实用性。 - 性能统计:通过记录程序执行时间来评估性能。
四、优化建议
- 错误处理:增加对输入数据的合法性检查,如题目数量应为正整数。
- 运算符优先级:目前程序简单地处理了所有运算符,可以进一步完善以支持正确的运算符优先级规则。
- 代码结构改进:将一些重复的代码逻辑封装成函数,提高代码的可读性和可维护性。
五、总结
一个四则运算题生成程序,目前只实现了基础的功能,以后会继续改进,把题目要求的功能全部逐步地完成完善并添加到程序当中。
1.