四则运算
Posted vambo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四则运算相关的知识,希望对你有一定的参考价值。
coding.net:https://git.coding.net/vambo/Caculates.git
需求分析:
编写一个程序
1.自动生成小学四则运算的题目
2.Myapp.exe -n 10 -o Exercise.txt 通过-n控制题目数量 Myapp.exe -r 10 -r控制数值范围
3.假分数转为真分数表示
5.程序生成的题目不能重复(PS:通过有限次交换+或者×变成同一道题目)
6.生成的题目存入执行程序的当前目录下的Exercises.txt文件,同时生成答案,存入当前目录下的Answers.txt文件。
特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。
7.程序能支持生成1W题
8.给定题目文件和答案文件,能判定对错 :如Myapp.exe -e <exercisefile>.txt -a <answerfile>.txt
设计文档:
1.设计一个类来存储运算数,类成员分别表示整数部分,分子部分,分母部分,boolean型表示是否带有分数。
2.设计一个类来存储运算符,+,-,×,÷。
3.获取控制台参数,有-e则为校验答案,否则为生成式子。设计文档:
4.用两个数组分别存储操作数和操作符,根据操作符数组来决定式子的运算方法。
5.计算过程用假分数表示,得出最终结果再约分。
具体实现:
- com.main
- Main 提供方法入口,接收控制台参数
- com.operationBean bean包
- Operand 操作数类
- Operator 操作符类
- com.tools 工具包
- Caculate 提供计算方法
- Reduction 提供方法将数化为规范的真分数
PS:加减乘除方法相近,故只贴加法
同理类推,三个运算符则为(++)+,(++)-,++(×),++(÷)
运行结果
为了方便在myeclipse集成环境下测试运行
PSP
PSP2.1 |
Personal Software Process Stages |
Time Senior Student |
Time |
|
Planning |
计划 |
5 |
10 |
|
· Estimate |
估计这个任务需要多少时间 |
5 |
5 |
|
Development |
开发 |
105 |
410 |
|
· Analysis |
需求分析 (包括学习新技术) |
10 |
10 |
|
· Design Spec |
生成设计文档 |
10 |
10 |
|
· Design Review |
设计复审 |
10 |
5 |
|
· Coding Standard |
代码规范 |
10 |
5 |
|
· Design |
具体设计 |
10 |
20 |
|
· Coding |
具体编码 |
50 |
300 |
|
· Code Review |
代码复审 |
5 |
30 |
|
· Test |
测试(自我测试,修改代码,提交修改) |
13 |
30 |
|
Reporting |
报告 |
15 |
20 |
|
· |
测试报告 |
6 |
10 |
|
· |
计算工作量 |
6 |
5 |
|
· |
并提出过程改进计划 |
6 |
10 |
|
|
|
|
|
|
总结
最近课余心思比较多的花在参加宣讲会和简历上,所以对于课业花的心思会比较少。对于这个项目我觉得是一个比较好的方式去学习和实践算法,但我应该是没做到。
在考虑查重的时候,看到王文基学长分享的《【四则运算】作业--如何判断重复》中,当算式使用二叉树形式存储时,可以通过最小子树判断算式的运算步骤。根据这种思路从而推出更浅显且暴力,能适用于我这个项目中的用法(因为项目并没有使用二叉树作为存储结构),既通过运算过程来判断算式是否重复,因为当1+2+3和3+2+1在我这个项目中实则为caculate(caculate(1+2),3)和caculate(caculate(3+2),1),即判断最小的caculate(操作数1,操作数2,操作符)是否相同(或者操作符为+、×时通过交换两个操作数位置后相同),但是在读取字符串时,想将字符串读取为操作数数组和操作符数组存储时出现逻辑问题,所以现在卡在这里。也因为此输入题目文件和答案文件时检查题目正确性也使用直接读取答案文件来匹配了。
一片绿。。。。。为了赶上deadline,就先提交目前的版本,之后在改进。
以上是关于四则运算的主要内容,如果未能解决你的问题,请参考以下文章