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日

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

             

  • 相关阅读:
    c++11 standardized memory model 内存模型
    C++和C API调用
    c+11 std::condition_variable and mutex
    Linux thread process and kernel mode and user mode page table
    c++ Initialization
    c++11 perfect forwarding
    C++11 template parameter deduction
    Cache缓存设计
    c++11 enable_shared_from_this
    大数相乘
  • 原文地址:https://www.cnblogs.com/act-gh95/p/4351216.html
Copyright © 2011-2022 走看看