zoukankan      html  css  js  c++  java
  • 四则运算2

                                               四则运算2

     

    思路:1.用srand函数判断随机数输出是否重复

         2.输出的数量直接输入即可,打印方式每行固定输出几个,由用户输入为准。

         3.有无乘除:生成随机数c小于4,0为+,1为-,2为*,3为/,没有乘除就排除c为2.3情况

           有无负数:排除c为0.1时小于0情况

           有无余数:求余判断是否为0

           有无括号:括号的情况需要生成多个随机数,所以我决定生成个随机数组,括号的位置也随机插入到随机数后面,运算符也随机插入。

         4.设置循环,条件判断,输出时有负数带括号输出,没有直接输出。

     

    代码:
    //四则运算2
    //孔宇航 2016/3/11
    
    #include <iostream>
    #include<stdlib.h>  
    #include <time.h>  
    using namespace std;
      
      void main()
      {
          int a0[1000],b0[1000],c0[1000],a1[1000],b1[1000],c1[1000],a2[1000],b2[1000],c2[1000],a3[1000],b3[1000],c3[1000],C[1000];
          int a,b,c,d;
          int i,j,A0,A1,A2,A3,B0,B1,B2,B3;
          int num,line,k;
          int min,max,m;
          int CC,FS,YS,KH;
    
      
          k=0;
          A0=0;A1=0;A2=0;A3=0;
          B0=0;B1=0;B2=0;B3=0;
         cout<<"*************四则运算2*************"<<endl;
         cout<<endl;
         cout<<endl;
         
          cout<<"请输入算式数量和每行显示数量(打印方式):"<<endl;
          cin>>num>>line;
         
         cout<<"是否要有乘除法?(1/0)"<<endl;
         cin>>CC;
          while(1)                             //判断输入是否合法
         {
            if(CC != 1&&CC != 0)
            {
                cout<<"输入有误,请重新输入:";
                cin>>CC;
            }
             else
                 break;
         }
         
         cout<<"加减有无负数?(1/0)"<<endl;
          cin>>FS;
         while(1)                             //判断输入是否合法
         {
            if(FS != 1&&FS != 0)
             {
                cout<<"输入有误,请重新输入:";
                cin>>FS;
              }
             else
                  break;
          }
          
          cout<<"除法有无余数?(1/0)"<<endl;
          cin>>YS;
          while(1)                             //判断输入是否合法
          {
             if(YS != 1&&YS != 0)
              {
                 cout<<"输入有误,请重新输入:";
                 cin>>YS;
             }
              else
                  break;
          }
         
           cout<<"是否有括号?(1/0)"<<endl;
          cin>>KH;
         while(1)                             //判断输入是否合法
         {
            if(KH!= 1&&KH != 0)
             {
                cout<<"输入有误,请重新输入:";
                cin>>KH;
              }
             else
                  break;
          }
    
    
          cout<<"请输入两个数数值范围min,max(min<max)"<<endl;
          cin>>min>>max;
         cout<<endl;
         while(1)                            //判断输入是否合法
         {
             if(min>=max)
              {
                 cout<<"输入有误,请重新输入:";
                  cin>>min>>max;
              }
              else
                  break;
          }
      
          m=max-min+1;
          for(i=0;i<1000;i++)
          {
              a0[i]=0;b0[i]=0;
              a1[i]=0;b1[i]=0;
              a2[i]=0;b2[i]=0;
              a3[i]=0;b3[i]=0;
         }
          srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子
          for(i=0;;i++)
          {
              a=min+rand()%m;
              b=min+rand()%m;
              d=min+rand()%m;
              c=rand()%4;
    
             if(CC==0)              //如果CC=0,去除c=2,3的情况
             {
                  if(c==2||c==3)
                     continue;
                  
    
              }
              if(FS==0)              //如果FS=0,去除c=0,1下结果小于0的情况
             {
                  if(c==0)
                  {
                      if(a+b<0)
                          continue;
                  }
                  else if(c==1)
                  {
                     if(a-b<0)
                         continue;
                 }
           }
            if(YS==0)             //如果YS=0,且是除法,去除a,b相除有余数的情况
             {
                if(c==3)
                     if(0 != a%b)
                        continue;
            }
        
            
            
            //将算式分为加、减、乘、除
             if(c==0)                       //加法
             {
                 for(j=0;j<=A0;j++)
                 {
                     if(a==a0[j]&&b==b0[j])
                     {
                         B0++;break;
                     }
                 }
                 if(B0>0)
                 {
                     B0=0;continue;
                 }
                 else
                 {
                     a0[A0]=a;
                     b0[A0]=b;
                     c0[A0]=a+b;
                     A0++;
                 }
             }
             else if(c==1)                   //减法
             {
                 for(j=0;j<=A1;j++)
                {
                     if(a==a1[j]&&b==b1[j])
                    {
                         B1++;break;
                     }
                 }
                 if(B1>0)
                 {
                     B1=0;continue;
                 }
                 else
                 {
                     a1[A1]=a;
                     b1[A1]=b;
                     c1[A1]=a+b;
                     A1++;
                 }
             }
             else if(c==2)                     //乘法
             {
                for(j=0;j<=A2;j++)
                 {
                     if(a==a2[j]&&b==b2[j])
                     {
                        B2++;break;
                     }
                 }
                 if(B2>0)
                 {
                     B2=0;continue;
                 }
                 else
                 {
                     a2[A2]=a;
                    b2[A2]=b;
                     c2[A2]=a+b;
                     A2++;
                 }
             }
             else                               //除法
             {
                 if(b==0)
                     continue;
                 for(j=0;j<=A3;j++)
                 {
                     if(a==a3[j]&&b==b3[j])
                     {
                         B3++;break;
                     }
                 }
                 if(B3>0)
                 {
                     B3=0;continue;
                 }
                 else
                 {
                     a3[A3]=a;
                     b3[A3]=b;
                     c3[A3]=a+b;
                     A3++;
                 }
             }
             if(num==A0+A1+A2+A3)                //限制算式数量
                 break;
         }
        
        
         
         //输出
          for(i=0;i<A0;i++)                        //  加法
         {
             k++;
             if(a0[i]<0)
                 cout<<"("<<a0[i]<<")";
             else
                 cout<<a0[i]<<" ";
                 cout<<"+";
             if(b0[i]<0)
                 cout<<"("<<b0[i]<<")";
             else
                 cout<<" "<<b0[i]<<" ";
             cout<<"=";
             if(k%line==0)
                 cout<<endl;
             else
                 cout<<"	";
         }
          for(i=0;i<A1;i++)                         // 减法
         {
             k++;
             if(a1[i]<0)
                 cout<<"("<<a1[i]<<")";
            else
                 cout<<a1[i]<<" ";
             cout<<"-";
             if(b1[i]<0)
                 cout<<"("<<b1[i]<<")";
             else
                 cout<<" "<<b1[i]<<" ";
             cout<<"=";
             if(k%line==0)
                 cout<<endl;
             else
                 cout<<"	";
         }
         for(i=0;i<A2;i++)                         // 乘法
         {
            k++;
             if(a2[i]<0)
                 cout<<"("<<a2[i]<<")";
            else
                 cout<<a2[i]<<" ";
             cout<<"*";
             if(b2[i]<0)
                 cout<<"("<<b2[i]<<")";
             else
                 cout<<" "<<b2[i]<<" ";
             cout<<"=";
            if(k%line==0)
                 cout<<endl;
             else
                 cout<<"	";
         }
         for(i=0;i<A3;i++)                          // 除法
         {
             k++;
             if(a3[i]<0)
                 cout<<"("<<a3[i]<<")";
            else
                 cout<<a3[i]<<" ";
            cout<<"/";
            if(b3[i]<0)
                 cout<<"("<<b3[i]<<")";
             else
                cout<<" "<<b3[i]<<" ";
            cout<<"=";
             if(k%line==0)
                 cout<<endl;
             else
                cout<<"	";
         }
       }


    截图:




        本次程序用了大量的时间,包括在网上查阅相关资料,复习以前知识,敲代码。括号部分只有了初步想法并没有实现此功能深感抱歉,本人编程能力有限,望老师谅解,会在以后的时间里好好学习,过后看看别的同学的学会这部分知识。除了括号的部分,其他功能还算完善,期间遇到些括号找不到错误的问题,由于没有按照代码规范要求编写,下次注意。还有些输出问题,负数加括号问题,输出个数不符合输入的要求,因为没有记录加减乘除的和没有计数和要求数做对比。一次次修改也算是完成了。

     

    项目计划总结

    周活动总结表

    姓名:孔宇航                                              日期:2016/3/11

    任务

    日期

    听课

    编写

    程序

    阅读

    课本

    准备

    考试

    日总计

    (分钟)

    周日

    周一

    100

    60

    60

    220

    周二

    120

    30

    150

    周三

    120

    60

    120

    周四

    100

    90

    90

    280

    周五

    300

    30

    330

    周六

    120

    120

    
    
    
    
    

    阶段时间和效率

    周数:1

    总计

    200

    810

    270

    1220

    平均

    30

    115

    40

    174

    最大

    100

    300

    90

    330

    最小

    100

    60

    30

    120

    
    
    
    
    
    
    
    

    2,时间记录日志:

    
    

    学生:孔宇航                                   日期:2016/3/11

    
    

    老师:王建民                                    课程:PSP

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/7

    14:00

    16:00

    20

    100

    上课

    17:00

    18:00

    60

    编程

    20:00

    21:00

    60

    读课本

    3/8

    15:00

    17:00

    120

    编程

    18:00

    19:00

    60

    查资料

    21:00

    21:30

    30

    读课本

    3/9

    10:00

    12:00

    20

    100

    查资料

    14:00

    16:00

    120

    编程

    17:00

    18:00

    60

    写作业

    20:30

    21:30

    60

    读课本

    3/10

    14:00

    16:00

    20

    100

    上课

    16:00

    18:00

    30

    90

    编程

    21:00

    21:30

    30

    30

    读课本

    3/11

    08:00

    13:30

    15:00

    9:00

    15:00

    20:00

    60

    90

    300

    查资料

    休息

    编程

    
    
    
    
    
    
    
    
    
    
    

    3,缺陷记录日志:

    
    

    学生:孔宇航                                      日期:2016/3/11

    
    

    老师:王建民 

    
    
    
    
    

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复阶段

    修复缺陷

    3/10

    1

    01

    编写

    编译

    2min

    括号丢失

    2

     02

     编写

     编译

     10min

     逻辑错误

    3/11

    3

    02

    编写

    编译

    20min

    循环错误,计数有误

    4

    02

    编写

    编译

    10min

    输出有误,语法错误

    
    

                                                                    

    
    
    
     
  • 相关阅读:
    java入门经验分享——记面向对象先导课程学习感想
    HashCode方法整理
    Java中vector用法整理
    Java中Iterator用法整理
    org.springframework.data.redis.RedisConnectionFailureException
    dubbo服务启动正常,但是访问不到服务,在监测中心也找不服务的原因之一
    【转】Elasticsearch Java Rest Client 指南
    【转】mybatis根据mapper执行sql的过程
    转:IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    ES的常用查询与聚合
  • 原文地址:https://www.cnblogs.com/kongyuhang/p/5267202.html
Copyright © 2011-2022 走看看