zoukankan      html  css  js  c++  java
  • 软件工程个人作业02

    设计思想:采用随机数来决定是否右括号,计算结果用到递归方法,先对运算符中的乘除进行计算,在进行加减计算,在输出结果。

    源程序代码:(未完成)

    package 四则运算;
    
    import java.util.Random;
    import java.util.*;
    
    public class Sizeyunsuan2 {
        public static void main(String[] args) {
            int m = 0;
            int n = 0;
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入题目中需要参与计算的数字个数(大于2但不要超过10个):");
            m = scan.nextInt();
            if (m > 1&& m < 11) {
                System.out.println("请输入需要生成的题目的数量:");
                n = scan.nextInt();
                shengcheng(m, n);
            } else
                System.out.println("超出范围!请重新输入!");
            main(args);
        }
    
        public static void shengcheng(int m, int n) {
            int[] shu = new int[m];
            String[] fuhao = new String[m - 1];
            System.out.println("生成的题目如下:");
            for (int i = 0; i < n;) {
                int panduan = new Random().nextInt(2);
                if (panduan == 0) {
                    shu = shu(m);
                    fuhao = fuhao(m - 1);
                    for (int x = 0; x < m -1;) {
                        System.out.print(shu[x]);
                        if (fuhao[x] == "/" && shu[x + 1] == 0) {
                            fuhao[x]="+";
                        }
                        System.out.print(fuhao[x]);
                        x++;
                    }
                    System.out.println(shu[shu.length-1]+"="+"        答案:" + jisuan(shu, fuhao));
                } else if (panduan == 1) {
                    shu = shu(m);
                    int weizhi1 = new Random().nextInt(shu.length - 1);
                    int weizhi2 =-weizhi1+ new Random().nextInt(shu.length - weizhi1-1) +1;
                    fuhao = fuhao(m - 1);
                    for (int x = 0; x < m;) {
                        if (x!=weizhi1&&x<m-1) {
                        System.out.print(shu[x]);
                        if (fuhao[x] == "/" && shu[x + 1] == 0) {
                            fuhao[x]="+";
                        }
                        System.out.print(fuhao[x]);
                        }
                        else if (x== weizhi1) {
                            System.out.print("("+shu[x]);
                            if (fuhao[x] == "/" && shu[x + 1] == 0) {
                                fuhao[x]="+";
                            }
                            System.out.print(fuhao[x]);
                        }
                        else if (x ==weizhi2&&x<m-1) {
                            System.out.print(shu[x]+")"+fuhao[x]);
                        }
                        else if (x ==weizhi2&&x==m-1) {
                            System.out.print(shu[x]+")");
                        }
                        x++;
                    }
                    System.out.print("=");
                    int[] shu2 = new int[weizhi2 - weizhi1 + 1];
                    String[] fuhao2 = new String[shu2.length - 1];
                    shu2[0] = shu[weizhi1];
                    for (int a = 1; a < shu2.length;) {
                        shu2[a] = shu[weizhi1 + i];
                        fuhao2[a - 1] = fuhao[weizhi1];
                        a++;
                    }
                    int jieguo = jisuan(shu2, fuhao2);
                    shu[weizhi1] = jieguo;
                    for (int x = weizhi1 + 1; x < shu.length - 1;) {
                        shu[x] = shu[x + 1];
                        x++;
                    }
                    for (int x = weizhi1 + 1; x < shu.length - 2;) {
                        fuhao[x] = fuhao[x + 1];
                        x++;
                    }
                    System.out.println("        答案:" + jisuan(shu, fuhao));
                }
                i++;
            }
        }
    
        public static int[] shu(int x) {
            int[] shu = new int[x];
            for (int i = 0; i < x;) {
                shu[i] = new Random().nextInt(100);
                i++;
            }
            return shu;
        }
    
        public static String[] fuhao(int x) {
            String fh[] = { "+", "-", "*", "/" };
            String[] fuhao = new String[x];
            for (int i = 0; i < x;) {
                int n = new Random().nextInt(4);
                fuhao[i] = fh[n];
                i++;
            }
            return fuhao;
        }
    
        public static int jisuan(int[] shu, String[] fuhao) {
            int[] shu1=new int[shu.length-1];
            String[] fuhao1=new String[fuhao.length-1];
            if (fuhao.length > 1) {
                int n = 0;
                for (int i = 0; i < fuhao.length;) {
                    if (fuhao[i] == "*") {
                        n = shu[i] * shu[i + 1];
                        for (int x = 0; x <=fuhao.length;) {
                           if(x<i){
                            shu1[x]=shu[x];
                            fuhao1[x]=fuhao[x];
                           }
                           else if(x==i){
                               shu1[x]=n;
                               fuhao1[x]=fuhao[x+1];
                           }
                           else if(x>i&&x<fuhao.length-1){
                               shu1[x]=shu[x+1];
                               fuhao1[x]=fuhao[x+1];
                           }
                           else if(x>i&&x==fuhao.length-1){
                               shu1[x]=shu[x+1];
                           }
                           x++;
                           }
                      }
                    else if (fuhao[i] == "/") {
                        n = shu[i] / shu[i + 1];
                        for (int x = 0; x <=fuhao.length;) {
                               if(x<i){
                                shu1[x]=shu[x];
                                fuhao1[x]=fuhao[x];
                               }
                               else if(x==i){
                                   shu1[x]=n;
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x<fuhao.length-1){
                                   shu1[x]=shu[x+1];
                                   fuhao1[x]=fuhao[x+1];
                               }
                               else if(x>i&&x==fuhao.length-1){
                                   shu1[x]=shu[x+1];
                               }
                               x++;
                            jisuan(shu1, fuhao1);
                        }
                        i++;
                    }
                    for (int b = 0; b < fuhao.length;) {
                        if (fuhao[b] == "+") {
                            n = shu[b] + shu[b + 1];
                            for (int x = 0; x <=fuhao.length;) {
                                   if(x<i){
                                    shu1[x]=shu[x];
                                    fuhao1[x]=fuhao[x];
                                   }
                                   else if(x==i){
                                       shu1[x]=n;
                                       fuhao1[x]=fuhao[x+1];
                                   }
                                   else if(x>i&&x<fuhao.length-1){
                                       shu1[x]=shu[x+1];
                                       fuhao1[x]=fuhao[x+1];
                                   }
                                   else if(x>i&&x==fuhao.length-1){
                                       shu1[x]=shu[x+1];
                                   }
                                   x++;
                            }
                        }
                        else if (fuhao[b] == "-") {
                            n = shu[b] - shu[b + 1];
                            for (int x = 0; x <=fuhao.length;) {
                                   if(x<i){
                                    shu1[x]=shu[x];
                                    fuhao1[x]=fuhao[x];
                                   }
                                   else if(x==i){
                                       shu1[x]=n;
                                       fuhao1[x]=fuhao[x+1];
                                   }
                                   else if(x>i&&x<fuhao.length-1){
                                       shu1[x]=shu[x+1];
                                       fuhao1[x]=fuhao[x+1];
                                   }
                                   else if(x>i&&x==fuhao.length-1){
                                       shu1[x]=shu[x+1];
                                   }
                                   x++;
                                jisuan(shu1, fuhao1);
                            }
                        }
                        b++;
                    }
                }
            }
            else if (fuhao.length == 1) {
                if (fuhao[0] == "+") {
                    shu[0] = shu[1] + shu[0];
                }
                if (fuhao[0] == "-") {
                    shu[0] = shu[1] - shu[0];
                }
                if (fuhao[0] == "*") {
                    shu[0] = shu[1] * shu[0];
                }
                if (fuhao[0] == "/") {
                    shu[0] = shu[1] / shu[0];
                }
            }
            int jieguo = shu[0];
            return jieguo;
        }
    }

    结果总结:在除法运算中,本来是想如果除号后为零则将除号换成加号,但是这将会导致输出的式子与结果不一致,符号不能替换后再输出。

    学生   胡泽杰

    日期   17/3/12

    教员   王建明

    程序    四则运算题目生成器

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/5

    1

    四则运算

    编码

    编译

    30min

    描述:能进行简单计算,可以化简并且输出分数结果

    3/10

    2

    四则运算

    编码

    编译

    2h

    描述:能输出多个数进行计算,但是不能进行分数的计算,进去额度不够

    3/12

    3

    四则运算

    编码

    编译

    3h

    描述:加入了括号,但是输出易出错,也不能判断除号后数是否为0

  • 相关阅读:
    【Opencv】直方图函数 calchist()
    【Lintcode】070.Binary Tree Level Order Traversal II
    【C++】*p++ = *p不同环境下操作不同
    【Python】String 字符串
    【Python】File IO
    栈和队列
    链表
    printf 的格式
    Linux的基本指令--
    机器人的运动范围
  • 原文地址:https://www.cnblogs.com/liulitianxia/p/6540008.html
Copyright © 2011-2022 走看看