• 作业1---四则运算


       一.需求分析:

    除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

    运算符为 +, −, ×, ÷

    并且要求能处理用户的输入,并判断对错,打分统计正确率。

    要求能处理用户输入的真分数, 如 1/2, 5/12 等

    使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目。

     二.功能设计:

    根据所写的代码,随机生成数字以及运算符号,并且组合成式子。

    能生成分数,并且是最简分数。

    输入计算结果后,如正确,输出正确,错误,则输出正确答案,并且能统计出错的题目个数。

       

    三.设计实现:

    此次实验,设置了4个class,主类--Main用来调用其他类,负责输入输出,判定结果以及统计错误个数

                                        类--result 计算

                                        类--fenshu 求最大公约数

                                        类--qqq用来生成的式子

    四.代码说明:

    主要的是main和qqq两个类

    main类:用循环语句来计算错误的个数,当number=0时,则跳出循环错误个数加1.

    import java.util.Scanner;
    public class Main {
        static randomqqq rand = new randomqqq();
        static result end = new result();
    
        public static void main(String[] args) {
            int number = 0;
            int falseNum = 0;
            String userresult, trueresult, fenzi, fenmu;
            Scanner in = new Scanner(System.in);
            System.out.print("输入随机生成的式子个数:");
            number = in.nextInt();
            for (; number != 0; number--) {
                rand.randTest();
                System.out.println("你输入的答案是:");
                Scanner result = new Scanner(System.in);
                userresult = result.nextLine();
                trueresult = Integer.toString(rand.result);
                if (rand.m == 0 && rand.randNum != 3) {
                    trueresult = Integer.toString(rand.result);
                } else {
                    trueresult = Integer.toString(rand.fenzi) + "/" + Integer.toString(rand.fenmu);
                }
    
                if (userresult.equals(trueresult)) {
                    System.out.println("答案正确!");
    
                } else {
                    falseNum++;
                    System.out.println("答案错误!  正确的答案:" + trueresult);
                }
            }
            System.out.println("错误的个数:" + falseNum);
        }
    }

    类qqq:选择参数,计算出式子

    int temp1 = yuefen.getnumber(a, c);
            int temp2 = yuefen.getnumber(b, d);
            int temp4 = yuefen.getnumber(a, b);        
            int fz = end.up(a, b, c, d, randNum);
            int fm = end.fenmu(a, b, c, d, randNum);
            int temp3 =yuefen.getnumber(fz,fm) ;
            switch (m) {
            case 0:
                if (b == 0 && randNum == 3)
                    System.out.println(b + " " + ch[randNum] + " " + a + " " + "=");
                else
                    System.out.println(a + " " + ch[randNum] + " " + b + " " + "=");
                break;
            case 1:
                System.out.println(
                        a / temp1 + "/" + c / temp1 + " " + ch[randNum] + " " + b / temp2 + "/" + d / temp2 + " " + "=");
                break;
            }
            if (m == 0 && randNum != 3)
                result = end.result1(a, b, randNum);
            else if (m == 0 && randNum == 3) {
                fenzi = a / temp4;
                fenmu = b / temp4;
            } else {
                fenzi = fz/ temp3;
                fenmu = fm / temp3;
    
            }

    五.测试运行:

    PSP:

    PSP2.1

    Personal Software Process Stages

    Time (%) Senior Student

    Time (%)

    Planning

    计划

    8

    5

    · Estimate

    估计这个任务需要多少时间

    20

    5

    Development

    开发

    25

    20

    · Analysis

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

    5

    5

    · Design Spec

    生成设计文档

    5

    5

    · Design Review

    设计复审

    0

    0

    · Coding Standard

    代码规范

    3

    3

    · Design

    具体设计

    10

    15

    · Coding

    具体编码

    50

    40

    · Code Review

    代码复审

    5

    5

    · Test

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

    10

    15

    Reporting

    报告

    5

    5

    ·

    测试报告

    1

    1

    ·

    计算工作量

    2

    5

    ·

    并提出过程改进计划

    3

    2

    实验总结:

     在编程之前,需要思考好可能忽略的问题以及可能出现的问题,比如此次实验,分数需要最简化,分数中,分母不为0的情况。计算错误的题数时,如何设计循环语句使其能够正确计算个数,生成式子时可能会出现错误的式子,式子的格式要规范等问题。有问题自己积极思考,思考不出来呢就问百度,找同学。 编程需要一步一步训练,才能有所进步。

  • 相关阅读:
    bzoj1103[POI2007]大都市meg
    bzoj1098[POI2007]办公楼biu
    bzoj1102[POI2007]山峰和山谷Grz
    POI刷题记录
    语法-指针
    dp-最长公共子序列
    如何判断素数
    C++的map用法
    stl-优先队列
    C++和Java的stack语法
  • 原文地址:https://www.cnblogs.com/lasolitude/p/6514118.html
Copyright © 2020-2023  润新知