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

    软件工程个人作业02

                                                                                                                                                         组员:李锦

    设计思想:每次的算法都会分很多种的情况,①将加减是否有正负(前面乘以-1 ②乘除是否有余数(先判断除法的余数是否为0,判断输出)③是否有无乘除法(在进行随机数产生的时候,先判断是否有乘除的运算,如果有,则在输出结果上有乘除法的输出,否则没有)④取值范围(在随机数的产生的时候先定义一个范围,对随机数的产生一定的范围影响。)⑤有无括号(进行有括号和无括号的分类的输出,有括号时进行静态数组的运算。)⑥可订制(在输出的时候,输入要输出的数量,在循环时使用这个循环。)

       源代码:            

    package test2;
    import java.util.*;
    import java.util.ArrayList;
    public class math {
        static int simplify(int x,int y)
        {
            //求最大的公约数
            int t,xx,yy,k=1;
            if(x>y){
                t=x;x=y;y=t;
              }
            for(int i=x;i>=2;i--){
                xx=x%i;yy=y%i;
                if(xx==0&&yy==0){
                    k=i;
                    break;
                }
            }
        return k;        
       }
    
    //程序的开始 
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int first1,first2, second1,second2,third1,third2,c,j,c2;
            String first3 = null,second3=null;
            //控制题目的个数
            Scanner in = new Scanner(System.in);
            System.out.println("请输入要定制的个数:");
            int number=in.nextInt();
            System.out.println("请输入生成数 的取值范围,数值大于0:");
            int range =in.nextInt();
            System.out.println("请输入是否产生括号(是1,否0):");
            int bracket =in.nextInt();
            if(bracket==0){
            System.out.println("是否有无负数(有1,没有0),请输入:");
            int negative=in.nextInt();
            System.out.println("请输入是否有乘除法,(有1,没有0),请输入:");
            int num =in.nextInt();
            if(num==1){
                 System.out.println("除法有无余数,(如果1,没有0),请输入:");
                 int remain =in.nextInt();
                 }
            else
                System.out.println("不用判断除法有无余数!");
            for(int k=0;k<number;k++)
            {
                //随机数的生成
                first1=(int)(Math.random()*range);//定义第一个真分数的分子
                first2=(int)(Math.random()*(range-1)+1);//定义第一个真分数的分子,分母不能为零
                second1=(int)(Math.random()*range);//定义第二个真分数的分子
                second2=(int)(Math.random()*(range-1)+1);//定义第二个真分数的分母,分母不能为零
                third1=(int)(Math.random()*range);//定义整数时的第一个整数
                third2=(int)(Math.random()*range);//定义整数时的第一个整数
                j=(int)(Math.random()*2);//定义计算时的整数加减法或是真分数的加减法
                c=(int)(Math.random()*4);//定义加减乘除  
                c2=(int)(Math.random()*2);//定义只有加减法的时候
                //将分数化简
                int s1=simplify(first1,first2);//求最大公约数
                if(first1/s1!=0&&first2/s1!=1)
                    first3="("+first1/s1+"/"+first2/s1+")";
                if(first1/s1==0||first2/s1==1)
                    first3="("+first1/s1+")"; //化简
                int s2=simplify(second1,second2);//求最大公约数
                if(second1/s2!=0&&second2/s2!=1)
                    second3="("+second1/s2+"/"+second2/s2+")";
                if(second1/s2==0||second2/s2==1)
                    second3="("+second1/s2+")";//化简
             
                //计算
                if(j==0&&num==1){
                    //有乘除的算法
                    if(negative==0){
                    if(c==0)
                      System.out.println(first3+" "+"+"+" "+second3+"=");
                      if(c==1)
                        System.out.println(first3+" "+"-"+" "+second3+"=");
                    }
                    if(negative==1){
                        if(c==0)
                            System.out.println("-"+first3+" "+"+"+" "+second3+"=");
                        if(c==1)
                          System.out.println("-"+first3+" "+"-"+" "+second3+"=");    
                    }
                      if(c==2)
                        System.out.println(first3+" "+"*"+" "+second3+"=");
                      if(c==3)
                          
                        System.out.println(first3+" "+"/"+" "+second3+"=");
                 }
                if(j==0&&num==0)
                {//没有乘除的算法
                    if(c2==0)
                        System.out.println(first3+" "+"+"+" "+second3+"=");
                      if(c2==1){
                            if((first1/s1/first2/s2)>=(second1/s2/second2/s2))
                                 System.out.println(first3+" "+"-"+" "+second3+"=");
                            else
                                 System.out.println(second3+" "+"-"+" "+first3+"=");
                      }
                }
            if(j==1&&num==1){
                    //有乘除的算法
                    if(negative==0){
                    if(c==0)
                        System.out.println(third1+" "+"+"+" "+third2+"=");
                      if(c==1)                      
                          System.out.println(third1+" "+"-"+" "+third2+"=");                     
                      }
                    if(negative==1){
                        if(c==0)
                            System.out.println("-"+third1+" "+"+"+" "+third2+"=");
                          if(c==1)                      
                              System.out.println("-"+third1+" "+"-"+" "+third2+"="); 
                    }
                      if(c==2)
                        System.out.println(third1+" "+"*"+" "+third2+"=");
                      if(c==3){
                     
                        //判断有无余数
                          int remain=0;
                          if(remain==0){
                            for(int a=0;;){
                                if(third2!=0){
                                    if((third1)%(third2)!=0){
                                     third1=(int)(Math.random()*range);
                                     third2=(int)(Math.random()*range);
                                      }
                                     else
                                        break;
                                }
                              else{
                                  third2=(int)(Math.random()*range);
                              }
                          }    
                        }
                          if(remain==1){
                              for(int b=0;;){
                                  if(third2!=0){
                                      if((third1)%(third2)==0){
                                      third1=(int)(Math.random()*range);
                                      third2=(int)(Math.random()*range);
                                      }
                                      else
                                          break;
                                  }
                                  else
                                      third2=(int)(Math.random()*range);
                              }
                            }
                        System.out.println(third1+" "+"/"+" "+third2+"=");
                      }
                 }
                if(j==1&&num==0)
                {//没有乘除的算法
                    if(negative==0){
                        if(c2==0)
                            System.out.println(third1+" "+"+"+" "+third2+"=");
                          if(c2==1)                      
                              System.out.println(third1+" "+"-"+" "+third2+"=");                     
                          }
                    if(negative==1){
                       if(c2==0)
                            System.out.println("-"+third1+" "+"+"+" "+third2+"=");
                         if(c2==1)                      
                              System.out.println("-"+third1+" "+"-"+" "+third2+"="); 
                        }
                }
            }
         }
        
        if(bracket==1){
            int sjs,zfg;
            int s;
            System.out.println("请输入数字数组个数:");
            int m=in.nextInt();
            System.out.println("请输入字符数组个数:");
            int t=in.nextInt();       
            int ssz[]=new int[m];   //数字数组
            char operate[]={'+','-','*','/'};
            char f[]=new char[t];  //字符数组
            for(int p=0;p<number;p++){
                sjs=(int)(Math.random()*10+3);//随机生成数字的个数(3-10)
                zfg=sjs-1;//字符个数等于随机数减一
                for( s=0;s<sjs;s++){
                    ssz[s]=(int)(Math.random()*range);//随机生成数
                }
                for(s=0;s<zfg;s++){
                    int nu=(int)(Math.random()*3);  //产生0-3的随机数来判断字符的+,-,*,/
                    f[s]=operate[nu];
                }
                f[zfg]='=';
                if(zfg%2==0){
                    //字符个数为偶数,从第二个数开始输出括号
                    System.out.print(ssz[0]);
                    System.out.print(f[0]);
                    for(s=1;s<zfg;s++){
                        System.out.print("(");
                        System.out.print(ssz[s]);
                        System.out.print(f[s]);
                        System.out.print(ssz[s+1]);
                        System.out.print(")");
                        System.out.print(f[s+1]);
                        s=s+1;
                    }System.out.println();
                }
                else{
                    for(s=0;s<zfg;s++){
                        System.out.print("(");
                        System.out.print(ssz[s]);
                        System.out.print(f[s]);
                        System.out.print(ssz[s+1]);
                        System.out.print(")");
                        System.out.print(f[s+1]);
                        s=s+1;
                    }System.out.println();
                }
            }
        }    
      }
    }

    截图

                                     周活动总结表

            姓名:苏月                           日期 2016/3/18

    听课

    编写代码

    阅读课本

    准备考试

    日总计

    周日

    周一

    100分钟

    0

    0

    100

    周二

    57

    10

    67

    周三

    10

    10

    20

    周四

    60

    30

    90

    周五

    90

    0

    90

    周六

    0

    0

    0

    周总计

    100分钟

    217

    40

    357

      

                                  时间记录日志

              学生:苏月                   日期:2016/3/18

              教师:王建民                 课程:软件工程

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    C

    U

    3/14

    8:00

    9:50

    10

    100

    上课

    课间

    3/15

    1600

    1800

    30

    90

    编程序

    吃饭

    3/16

    1520

    1700

    30

    70

    编程序

    聊程序

    3/17

    2100

    2330

    30+10

    110

    写程序写进度条

    吃饭,休息

    3/18

    1630

    1800

    0

    90

    编程序,写进度条,写总结

    吃饭,看电视,聊天

    2000

    2330

    50

    160

    3/19

    837

    1100

    40

    117

    写总结

    聊天,洗脸

                       缺陷记录日志

              学生:苏月                      日期:2016/3/18

              教员:王建民                    程序号:四则运算2

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3/14

    1

    讨论

    实现

    1小时

    描述:在讨论中不知道怎样实现重复的内容和加括号的部分。

    3/15

    2

    编程

    编译

    30分钟

    描述:输出不了同个数的算法

    3/17

    3

    设计

    编译

    1小时

    描述:在除法的时候漏掉了分母为0的问题

    3/18

    4

    编程

    编译

    50分钟

    描述:出现了数组越界的现象

    个人总结:

             在每次的写代码中,①都应该学会一定的分块(就是讲一个特别大项目的按着一定的功能将代码分为好几块来写)否则的话,就会像这次一样,出现很大的混乱情况②而且在每一步的实现中,都应该有很清楚的整理思路③在改错的过程中,我们应该明确错误在那。为什么会错误,这样改错才不会手忙脚乱。③一定要锻炼自己的耐心,这样才能够更加有耐心的去写代码

  • 相关阅读:
    Gin+Gorm小项目
    python实现监控信息收集
    Vue引入Stylus
    Go搭建一个Web服务器
    saltstack高效运维
    04-01 Django之模板层
    03-01 Django之视图层
    02-01 Django之路由层
    HTTP协议
    01-01 Web应用
  • 原文地址:https://www.cnblogs.com/syhn/p/5294346.html
Copyright © 2011-2022 走看看