zoukankan      html  css  js  c++  java
  • oh my god 四则运算

    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

     

      

     

     

     

     

     

     

     

      

  • 相关阅读:
    Codeforces 834D The Bakery
    hdu 1394 Minimum Inversion Number
    Codeforces 837E Vasya's Function
    Codeforces 837D Round Subset
    Codeforces 825E Minimal Labels
    Codeforces 437D The Child and Zoo
    Codeforces 822D My pretty girl Noora
    Codeforces 799D Field expansion
    Codeforces 438D The Child and Sequence
    Codeforces Round #427 (Div. 2) Problem D Palindromic characteristics (Codeforces 835D)
  • 原文地址:https://www.cnblogs.com/leiqh549/p/8646055.html
Copyright © 2011-2022 走看看