zoukankan      html  css  js  c++  java
  • 四则运算程序开发过程

    一、设计思路:定义x,y,利用随机数产生函数rand()%m+1产生在数值范围中的两个数x,y,并且通过产生1-4的随机数控制四则运算的符号和是否产生乘除法

    1、避免重复:定义数组,将输出的结果存在数组中,通过比较输出结果与数组中的变量是否重复,避免输出结果的重复。

    2、可定制:定义一个变量i,输入i的数值控制出题的数量,然后通过i控制循环次数输出。

                    定义变量来控制题目是按行输出还是按列输出。

    3、控制参数:通过产生随机数的范围是1-2还是1-4控制是否输入乘除法。

                       通过改变m的值控制数的范围。

                       产生1-2的随机数来控制x,y的正负,决定加减法是否有负数。

                       如果输出的是除法,通过求余运算判断是否有余数,从而决定是否输出。

                       如果支持分数,输出随机数的倒数支持分数。

    二、代码

    #include<iostream>

    using namespace std;

    void create(int t,int &m,int &n,int &l,char x,char y,char z)

    {

          int v;

          m=rand()%t+1;

          n=rand()%t+1;

          if(x=='y')  

          {   

              l=rand()%4;  

          }  

          else  

          {   

               l=rand()%2;

           }  

           if(z=='n')

           {   

                while(m%n!=0)  

                {    

                     m=rand()%t+1;      

                     n=rand()%t+1;   

                 }  

             }

              if((l==0||l==1)&&y=='y')  

              {   

                   v=rand()%2;   

                   if(v==0)   

                   {   

                         m=0-m;   

                    }

               }

     }

    void main()

    {  

          int i,j,m,n,l,s,t,u;  

          char x,y,z,w;  

          cout<<"请输入出题的数量:";

          cin>>s;

          cout<<"请输入取值上限(大于0):";

          cin>>t;  

          cout<<"请输入是否有乘除法(y为是,n为否):";

          cin>>x;

          cout<<"请输入加减法是否有负数(y为是,n为否):";  

          cin>>y;  

          if(x=='y')

          {   

                cout<<"请输入除法是否有余数(y为是,n为否):";  

                cin>>z;  

          }  

          else  

          {   

                 z=NULL;  

          }  

          cout<<"请输入是否有分数(y为是,n为否):";

          cin>>w;  

          cout<<"请输入打印方式(1为按行输出,2为按列输出):";

          cin>>u;

          int *a=new int[s];  

          int *b=new int[s];  

          int *c=new int[s];

          create(t,m,n,l,x,y,z);

          for(i=0;i<s;i++)  

          {  

                for(j=0;j<i;j++)  

                {    

                      if(a[j]==m&&b[j]==n&&c[j]==l)    

                      {     

                            create(t,m,n,l,x,y,z);     

                            j=-1;    

                       }  

                 }   

                a[i]=m;   

                b[i]=n;   

                c[i]=l;

                if(w=='y'&&i%2==0)    

                {   

                      if(l==0)    

                      {     

                             cout<<"1/"<<m<<"+"<<n<<"="<<" ";    

                      }         

                     if(l==1)     

                     {       

                             cout<<"1/"<<m<<"-"<<n<<"="<<" ";      

                      }    

                      if(l==2)      

                      {       

                              cout<<"1/"<<m<<"*"<<n<<"="<<" ";      

                      }      

                      if(l==3)      

                      {       

                              cout<<"1/"<<m<<"/"<<n<<"="<<" ";      

                       }       

                }     

                else     

                {      

                       if(l==0)      

                      {       

                              cout<<m<<"+"<<n<<"="<<" ";      

                      }         

                      if(l==1)      

                      {       

                               cout<<m<<"-"<<n<<"="<<" ";      

                       }      

                       if(l==2)      

                       {       

                                cout<<m<<"*"<<n<<"="<<" ";      

                        }      

                        if(l==3)      

                        {       

                                 cout<<m<<"/"<<n<<"="<<" ";   

                         }     

               }  

                if(u==2)  

                {   

                       cout<<endl;   

                 }  

           }

    }

    三、实验截图

     四、总结

           写程序之前对程序思路进行了设计,但实际过程中与思路相差甚远,主要有两个方面。一、是由于实现的功能较多,经常要进行验证和重新生成,比较繁琐,所以将程序分成了主函数和其他函数,使程序比较清晰易懂。二、在支持分数的过程中,并不像想象的那么简单,所以最终通过输出随机数的倒数不太完美实现了这个功能。

           具体程序中出现的错误也主要有两方面。一是语法上出现的,忘记了输入分号或者其他符号,最终完美解决。二是由于未在前面声明函数,导致函数在主函数中不能调用,最后将函数放在主函数前面,从而解决了问题。

    五、记录表

              学生______郭昊                                   日期        2015年3月19日

              教师          王建民                                 课程        软件工程概论       

             

  • 相关阅读:
    How To Scan QRCode For UWP (4)
    How To Crop Bitmap For UWP
    How To Scan QRCode For UWP (3)
    How To Scan QRCode For UWP (2)
    How To Scan QRCode For UWP (1)
    How to change windows applicatioin's position via Win32 API
    8 Ways to Become a Better Coder
    How to resize or create a thumbnail image from file stream on UWP
    C# winform压缩文件夹带进度条
    MS ACCESS MID函数
  • 原文地址:https://www.cnblogs.com/act-gh95/p/4351216.html
Copyright © 2011-2022 走看看