Week1地址:https://git.coding.net/leiqh549/four.git

需求分析:

1.一个生成n道四则运算的程序,要求数字在0-100间,运算符在3-5个之间且运算符至少包含两种且不可出现负数与分数。

功能设计:

基本功能:

  • 程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为一个输出文件示例。

附加功能:

  • 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。
  • 扩展程序功能支持真分数的出题与运算(只需要涵盖加减法即可),例如:1/6 + 1/8 + 2/3= 23/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1/6=2/3,而非4/6,且计算过程中与结果都须为真分数

设计实现:

在程序设计这方面,我只有一个Main.java文件,其中包含一个主方法以及三个方法,分别是:

  1. public static char[] create_carr(int c_sum);/*根据容量创建数符数组*/
  2. public static int[] create_narr(int c_sum)/*根据容量创建运算数数组*/
  3. public static int[] correct(int[] n, char[] c, int c_sum);/*根据所创的数符数组以及运算数数组进行矫正,矫正成复合题意的数组*/

各函数间关系如下:

create_carr()        create_narr()

correct()

 

比较满意的代码:

public static int[] correct(int[] n, char[] c, int c_sum) {

for (int i = 0; i < n.length - 1; i++) {

if (c[i] == '/') {

while (n[i] < n[i + 1] || n[i + 1] == 0 || n[i] % n[i + 1] != 0) {

int[] a = create_narr(c_sum);

for (int j = 0; j < n.length; j++) {

n[j] = a[j];

}

}

} else if (c[i] == '-') {

while (n[i] < n[i + 1]) {

int[] a = create_narr(c_sum);

for (int j = 0; j < n.length; j++) {

n[j] = a[j];

}

}

           

        }

        return n;

 

    }

 

这段代码我承认是错误的,我本来的想法是将创建完的数符数组以及运算数组传入该方法中,然后测试频频出现问题,后来我发现了一个巨大的问题,还是java基础的问题,当一个外部变量传给方法的参数的时候,外部变量是无法改变的,除非是引用变量,内部变量把引用的对象的内容进行修改,这样才可以改变外部变量,不过我觉得想法还是可以的,因为无法return两个数组,所以干脆把数组的引用传给方法内部,在方法内部实现一系列的矫正,因为也是3.25号开始写的作业,大概看了一眼其他同学的博客,发现有很多分数相加的题目,感觉没有符合要求,于是就细想了下这个矫正方法应该怎么实现,觉得很麻烦,于是就只写了一小部分,希望以后能够完善出来;

 

部分代码展示:

 

 

 

 

总结:因为自身的原因,我把作业拖了好久好久,以至于3.25号,也就是今天才开始写这个作业,我承认代码完成的程度很差,不过我觉得还是要提交上来,证明起码这一天时间我是在努力地想要完成这项作业,不过完成的效果并不好,因为我的算法和数据结构烂的一塌糊涂,所以我真的逐渐发现软件工程导论这门课程的好处,它能够让你立刻找到自己身上的不足并且激励着你前行,谢谢各位老师们留的这次作业,我会努力下去。

 

8.PSP

PSP2.1

任务内容

计划共完成需要的时间(h)

实际完成需要的时间(h)

Planning

计划

5

4

·        Estimate

·   估计这个任务需要多少时间,并规划大致工作步骤

5

4

Development

开发

5

8

·        Analysis

·         需求分析 (包括学习新技术)

0.5

0.5

·        Design Spec

·         生成设计文档

1

1

·        Design Review

·         设计复审 (和同事审核设计文档)

1.5

2

·        Coding Standard

·         代码规范 (为目前的开发制定合适的规范)

1

1.5

·        Design

·         具体设计

2

2

·        Coding

·         具体编码

4

5

·        Code Review

·         代码复审

1

0.5

·        Test

·         测试(自我测试,修改代码,提交修改)

2

1.5

Reporting

报告

2

3

·         Test Report

·         测试报告

2

1

·         Size Measurement

·         计算工作量

1

1

·         Postmortem & Process Improvement Plan

·         事后总结, 并提出过程改进计划

0.5

0.5

 

oh my god 四则运算的更多相关文章

  1. 介绍一款原创的四则运算算式生成器:CalculateIt2

    家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习.于是,自己在业余时间开发了一个四则运算算式生成器,名为:Calcu ...

  2. 作业二:个人编程项目——编写一个能自动生成小学四则运算题目的程序

    1. 编写一个能自动生成小学四则运算题目的程序.(10分)   基本要求: 除了整数以外,还能支持真分数的四则运算. 对实现的功能进行描述,并且对实现结果要求截图.   本题发一篇随笔,内容包括: 题 ...

  3. 四则运算appNABCD模型

    团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnb ...

  4. 第一章-第一题(小学生四则运算)--By郭青云

    1.项目需求 a) 除了整数以外,还要支持真分数的四则运算. (例如:  1/6 + 1/8 = 7/24) b) 让程序能接受用户输入答案,并判定对错. 最后给出总共 对/错 的数量. c) 逐步扩 ...

  5. 一个简易的四则运算单元...(15.12.15 BUG更新)

    网上找的, 没有作者信息, 只能在这里感谢一下了, 支持标准写法的四则运算 --2015-12-15 修改了一个内存泄漏的BUG - Pop方法没有释放申请的内存 unit Base.Calculat ...

  6. 利用ANTLR4实现一个简单的四则运算计算器

    利用ANTLR4实现一个简单的四则运算计算器 ANTLR4介绍 ANTLR能够自动地帮助你完成词法分析和语法分析的工作, 免去了手写去写词法分析器和语法分析器的麻烦 它是基于LL(k)的, 以递归下降 ...

  7. 【实践】js实现简易的四则运算计算器

    最近看了一个大神推荐的某公司面试程序员的js 面试题,题目是用js 做一个计算器于是跟着大神的思想自己做了一下 ps:功能还没有完善好毕竟自己还是一只菜鸟还在不断学习中. 闲话不多说先上css代码 & ...

  8. HDU 5938 Four Operations(四则运算)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  9. C语言实现四则运算

    学生:宋丹丹 张潇裕 #include<iostream>#include<ctime>using namespace std;void main(){ int x1,x2,a ...

  10. 第五篇——C++实现四则运算

    写一个能自动生成小学四则运算题目的命令行 “软件”, 分别满足下面的各种需求.下面这些需求都可以用命令行参数的形式来指定: a) 除了整数以外,还要支持真分数的四则运算. (例如: 1/6 + 1/8 ...

随机推荐

  1. go 交叉编译,部署

    go web 部署 交叉编译 go 语言有个强大的地方就是 交叉编译 windows --cmd 设置环境变量-mac SET CGO_ENABLED=0 SET GOOS=darwin SET GO ...

  2. Nodejs-第一篇(什么是NodeJS)

    NodeJS 介绍 Node.js 是什么? 1.Node.js 是一个开发平台,就像Java开发平台..Net开发平台.PHP开发平台.Apple开发平台一样: 什么是开发平台?它们有对应的编程语言 ...

  3. WPF 跟随鼠标动画 by wgscd

    WPF 跟随鼠标动画 by wgscd <UserControl x:Class="WpfApplication1.Spark" xmlns="http://sch ...

  4. 【Java字符序列】Pattern

    简介 Pattern,正则表达式的编译表示,操作字符序列的利器. 整个Pattern是一个树形结构(对应于表达式中的‘|’),一般为链表结构,树(链表)的基本元素是Node结点,Node有各种各样的子 ...

  5. Docker系列之CentOS7安装Docker(一)

    0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 一.瞎扯淡(只讲有用的) 感兴趣的同学可以上网搜索一下docker具体的介绍.我这边主要介绍偏实战的内容,不喜勿喷,有问题也请指出 ...

  6. 部署jenkins问题

    总结:配置的url,jenkins部署的ip必须有开放,否则发布会超时失败

  7. IOS测试-Fastmonkey

    目录: 一.背景 二.Fastmonkey介绍 三.Fastmonkey操作前准备 四.Fastmonkey工程配置过程 五.执行Monkey测试 六.FAQ Fastmonkey实践 一.背景: 因 ...

  8. 【转】Linux - CentOS 7网络配置

    Linux - CentOS 7网络配置 https://blog.csdn.net/J080624/article/details/78083988   安装完VM后,需要进行网络配置.第一个目标为 ...

  9. == 和 equals 的区别是什么?

    已经有很多人说过二者的区别了,我直接上代码. String strA = "123"; String strB = "123"; String strC = & ...

  10. 可道云kodexplorer搭建私有云后的配置优化

    一.上传下载速度优化首先明确可道云没有对上传下载做任何限制,速度快慢和网络环境有关.可道云是基于http上传,所以和其他http上传速度基本一致:可以对比其他web系统或网站说附件上传速度.同其他例如 ...