第四次作业 运算
作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
GitHub地址:https://github.com/Rozmin/PupilsArithme.git
一、题目要求:
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
二、个人软件过程耗时估计与统计表
-
PSP模版表格如下,第3列和第4列分别对应第2列条目的估计时间和真实时间,模版表格里的时间只是示意。
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 8 | 6 |
· Estimate | 估计这个任务需要多少时间 | 10 | 15 |
Development | 开发 | 82 | 88 |
· Analysis | 需求分析 (包括学习新技术) | 6 | 10 |
· Design Spec | 生成设计文档 | 5 | 6 |
· Design Review | 设计复审 | 4 | 6 |
· Coding Standard | 代码规范 | 3 | 6 |
· Design | 具体设计 | 10 | 12 |
· Coding | 具体编码 | 36 | 21 |
· Code Review | 代码复审 | 7 | 9 |
· Test | 测试(自我测试,修改代码,提交修改) | 13 | 21 |
Reporting | 报告 | 9 | 6 |
· | 测试报告 | 3 | 2 |
· | 计算工作量 | 2 | 1 |
· | 并提出过程改进计划 | 3 | 3 |
三、代码提交
提交你的源代码和可执行程序至你的github上,并在博客中给出你的github地址。
需要提交的应该有
- 项目的工程文件,例如Eclipse的项目文件
- 项目的源代码
- 一些必要的配置
- 单独创建一个public子目录,存放编译后的可执行程序,这不是标准的软件发布的做法,但是目前你这样先提交可以。
四、博文
1、构思
开发工具:Code::Blocks
编程语言:C++
主要分为三大板块:
(1)主函数
(2)运算模块(随机数和随机运算符号->产生随机算式;判断)
(3)计算模块(加减乘除)
2、主代码
1 float createEquation() { 2 int number1, number2, number3, operation1, operation2; 3 float input_answer, answer = 0; 4 do { 5 srand(time(0)); 6 number1 = rand()%100+1; 7 number2 = rand()%100+1; 8 number3 = rand()%100+1; 9 operation1 = rand()%4+1; 10 operation2 = rand()%4+1; 11 if(operation1 == multiplication || operation1 == division) { 12 answer = calculate(calculate(number1, number2, operation1), number3, operation2 ); 13 } 14 else { 15 if(operation2 == multiplication || operation2 == division) { 16 answer = calculate(number1 ,calculate(number2, number3, operation1), operation2 ); 17 } 18 else { 19 answer = calculate(calculate(number1, number2, operation1), number3, operation2 ); 20 } 21 } 22 }while(answer < 0); 23 printf("%d %c %d %c %d =",number1, operation(operation1),number2, operation(operation2), number3); 24 scanf("%f", &input_answer); 25 if(answer == input_answer) { 26 printf("对了"); 27 } 28 else { 29 printf("正确答案是%f", answer); 30 } 31 32 printf("\n"); 33 }
3、实验结果
4、遇到的问题
开始时判断的问题想了很多问题,最后决定通过判断前后运算符来来判断运算顺序,通过answer<0使结果不小于0.