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

    设计思想:

     编写函数产生操作数、运算符、括号。

     随机表达式长度  随机加括号  加随机操作数 运算符 。

     加括号时,必须先有左括号 才有可能有右括号。

     注: 除法有无余数功能没有及时实现,我会稍后补上。

            打印功能在功能完善后一并补上。

      1 /*2013/3/12   李萌  20133079 */
      2 #include <iostream>
      3 #include <ctime>
      4 using namespace std;
      5 void Opreands_1()  /*产生操作数 (-9 -- 9)除0*/
      6 {
      7     while(int f=1)  
      8     {
      9         int Oper=rand()%19-9;
     10         if(Oper>0)             /*没有0*/
     11         {
     12             cout<<Oper;
     13             break;
     14         }
     15         if(Oper<0)
     16         {
     17             cout<<"("<<Oper<<")";
     18             break;
     19         }
     20     }
     21 }
     22 void Operands_2()/*-9到9  有0*/
     23 {
     24     while(int f=1)  /*产生操作数 (-9 -- 9)*/
     25     {
     26         int Oper=rand()%19-9;
     27         if(Oper>=0)/*有0*/
     28         {
     29             cout<<Oper;
     30             break;
     31         }
     32         else
     33         {
     34             cout<<"("<<Oper<<")";
     35             break;
     36         }
     37     }
     38 }
     39 void Operator_1()/*随机产生运算符   有乘除*/
     40 {
     41     int f=rand()%4;
     42     if(f==0) 
     43     {
     44         cout<<"+";
     45     }
     46     if(f==1)
     47     {
     48         cout<<"-";
     49     }
     50     if(f==2)
     51     {
     52         cout<<"*";
     53     }
     54     if(f==3)
     55     {
     56         cout<<"÷";
     57     }
     58 }
     59 void Operator_2()/*随机产生运算符   无乘除*/
     60 {
     61     int f=rand()%2;
     62     if(f==0) 
     63     {
     64         cout<<"+";
     65     }
     66     if(f==1)
     67     {
     68         cout<<"-";
     69     }
     70 }
     71 int Bracket_l(int left) /*随机产生左括号*/
     72 {
     73     int f=rand()%3;
     74     if(f<2)
     75     {
     76         return left;
     77     }
     78     if(f==2)
     79     {
     80         cout<<"(";
     81         return left+1;
     82     }
     83 }
     84 int Bracket_r(int right) /*随机产生右括号*/
     85 {
     86     int r=rand()%5;
     87     if(r==0)
     88     {
     89         return right;
     90     }
     91     if(r>0) /*产生右括号的概率大 */
     92     {
     93         cout<<")";
     94         return right+1;
     95     }
     96 }
     97 void Way_1() /*最多可支持10个数参与计算   有乘除 有括号 10以内 加减有负数 除法有余数*/
     98 {
     99     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    100     int left=0,right=0,flag=0,left_1;
    101     for(int i=0;i<length-1;i++)
    102     {
    103         left_1=left;
    104         left=Bracket_l(left);
    105         if(left_1!=left)     /*产生了左括号  flag=i*/
    106         {
    107             flag=i;
    108         }
    109         Opreands_1();
    110         if(left>right&&flag!=i) /*左括号大于右括号的个数 and 产生左括号和右括号不在一个循环里  即不会产生“(随机数)” 这种无效情况*/
    111         {
    112             right=Bracket_r(right);
    113         }
    114         Operator_1();  /*有乘除*/
    115     }
    116     Opreands_1(); /*因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
    117     for(int i=0;i<left-right;i++)
    118     {
    119         cout<<")";
    120     }
    121     cout<<" = "<<endl;
    122 }
    123 void Way_2()/*最多可支持10个数参与计算   无乘除 有括号 10以内 加减有负数 除法有余数*/
    124 {
    125     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    126     int left=0,right=0,flag=0,left_1;
    127     for(int i=0;i<length-1;i++)
    128     {
    129         left_1=left;
    130         left=Bracket_l(left);
    131         if(left_1!=left)     /*产生了左括号  flag=i*/
    132         {
    133             flag=i;
    134         }
    135         Operands_2();  /*产生操作数 (-9 -- 9)*/
    136         if(left>right&&flag!=i) /*左括号大于右括号的个数 and 产生左括号和右括号不在一个循环里  即不会产生“(随机数)” 这种无效情况*/
    137         {
    138             right=Bracket_r(right);
    139         }
    140         Operator_2();/*无乘除*/
    141     }
    142     Operands_2();  /*因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
    143     for(int i=0;i<left-right;i++)
    144     {
    145         cout<<")";
    146     }
    147     cout<<" = "<<endl;
    148 }
    149 void Way_3() /*最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数*/
    150 {
    151     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    152     int left=0,right=0,flag=0,left_1;
    153     for(int i=0;i<length-1;i++)
    154     {
    155         Opreands_1(); /*-9-9除0*/
    156         Operator_1(); /*有乘除*/
    157     }
    158     Opreands_1();  /* 因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
    159     cout<<" = "<<endl;
    160 }
    161 void Way_4()  /*最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数*/
    162 {
    163     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    164     int left=0,right=0,flag=0,left_1;
    165     for(int i=0;i<length-1;i++)
    166     {
    167         Operands_2();  /*产生操作数 (-9 -- 9)*/
    168         Operator_2(); /*无乘除*/
    169     }
    170     Operands_2();  /* 因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
    171     cout<<" = "<<endl;
    172 }
    173 void Way_5()  /*最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) 0-9  加减有负数 除法有余数*/
    174 {
    175     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    176     int left=0,right=0,flag=0,left_1;
    177     for(int i=0;i<length-1;i++)
    178     {
    179         cout<<rand()%9+1; /*1-9除0*/
    180         Operator_1(); /*有乘除*/
    181     }
    182     cout<<rand()%9+1;  /* 因为 一个操作数一个运算符   还缺少一个操作数 (1 -- 9)*/
    183     cout<<" = "<<endl;
    184 }
    185 void Way_6()  /*最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数*/
    186 {
    187     int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
    188     int left=0,right=0,flag=0,left_1;
    189     for(int i=0;i<length-1;i++)
    190     {
    191         cout<<rand()%10;  /*产生操作数 (0-- 9)*/
    192         Operator_2(); /*无乘除*/
    193     }
    194     cout<<rand()%10;  /* 因为 一个操作数一个运算符   还缺少一个操作数 (0-- 9)*/
    195     cout<<" = "<<endl;
    196 }
    197 void main() /*主函数*/
    198 {
    199     srand((unsigned)time(0));
    200     cout<<"--------------------------------------------------------------------------"<<endl;
    201     cout<<"最多可支持10个数参与计算  有乘除 有括号 -9到9  加减有负数 除法有余数"<<endl;
    202     for(int num=0;num<30;num++)
    203     {
    204         cout<<num+1<<"";
    205         Way_1();
    206     }
    207     cout<<"--------------------------------------------------------------------------"<<endl;
    208     cout<<"最多可支持10个数参与计算  无乘除 有括号 -9到9  加减有负数 除法有余数"<<endl;
    209     for(int num=0;num<30;num++)
    210     {
    211         cout<<num+1<<"";
    212         Way_2();
    213     }
    214     cout<<"--------------------------------------------------------------------------"<<endl;
    215     cout<<"最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数"<<endl;
    216     for(int num=0;num<30;num++)
    217     {
    218         cout<<num+1<<"";
    219         Way_3();
    220     }
    221     cout<<"--------------------------------------------------------------------------"<<endl;
    222     cout<<"最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数"<<endl;
    223     for(int num=0;num<30;num++)
    224     {
    225         cout<<num+1<<"";
    226         Way_4();
    227     }
    228     cout<<"最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数"<<endl;
    229     for(int num=0;num<30;num++)
    230     {
    231         cout<<num+1<<"";
    232         Way_5();
    233     }
    234     cout<<"最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数"<<endl;
    235     for(int num=0;num<30;num++)
    236     {
    237         cout<<num+1<<"";
    238         Way_6();
    239     }
    240 }
     

    /*2013/3/12   李萌  20133079 */
    #include <iostream>
    #include <ctime>
    using namespace std;
    void Opreands_1()  /*产生操作数 (-9 -- 9)除0*/
    {
        while(int f=1)  
        {
            int Oper=rand()%19-9;
            if(Oper>0)             /*没有0*/
            {
                cout<<Oper;
                break;
            }
            if(Oper<0)
            {
                cout<<"("<<Oper<<")";
                break;
            }
        }
    }
    void Operands_2()/*-9到9  有0*/
    {
        while(int f=1)  /*产生操作数 (-9 -- 9)*/
        {
            int Oper=rand()%19-9;
            if(Oper>=0)/*有0*/
            {
                cout<<Oper;
                break;
            }
            else
            {
                cout<<"("<<Oper<<")";
                break;
            }
        }
    }
    void Operator_1()/*随机产生运算符   有乘除*/
    {
        int f=rand()%4;
        if(f==0)
        {
            cout<<"+";
        }
        if(f==1)
        {
            cout<<"-";
        }
        if(f==2)
        {
            cout<<"*";
        }
        if(f==3)
        {
            cout<<"÷";
        }
    }
    void Operator_2()/*随机产生运算符   无乘除*/
    {
        int f=rand()%2;
        if(f==0)
        {
            cout<<"+";
        }
        if(f==1)
        {
            cout<<"-";
        }
    }
    int Bracket_l(int left) /*随机产生左括号*/
    {
        int f=rand()%3;
        if(f<2)
        {
            return left;
        }
        if(f==2)
        {
            cout<<"(";
            return left+1;
        }
    }
    int Bracket_r(int right) /*随机产生右括号*/
    {
        int r=rand()%5;
        if(r==0)
        {
            return right;
        }
        if(r>0) /*产生右括号的概率大 */
        {
            cout<<")";
            return right+1;
        }
    }
    void Way_1() /*最多可支持10个数参与计算   有乘除 有括号 10以内 加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            left_1=left;
            left=Bracket_l(left);
            if(left_1!=left)     /*产生了左括号  flag=i*/
            {
                flag=i;
            }
            Opreands_1();
            if(left>right&&flag!=i) /*左括号大于右括号的个数 and 产生左括号和右括号不在一个循环里  即不会产生“(随机数)” 这种无效情况*/
            {
                right=Bracket_r(right);
            }
            Operator_1();  /*有乘除*/
        }
        Opreands_1(); /*因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
        for(int i=0;i<left-right;i++)
        {
            cout<<")";
        }
        cout<<" = "<<endl;
    }
    void Way_2()/*最多可支持10个数参与计算   无乘除 有括号 10以内 加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            left_1=left;
            left=Bracket_l(left);
            if(left_1!=left)     /*产生了左括号  flag=i*/
            {
                flag=i;
            }
            Operands_2();  /*产生操作数 (-9 -- 9)*/
            if(left>right&&flag!=i) /*左括号大于右括号的个数 and 产生左括号和右括号不在一个循环里  即不会产生“(随机数)” 这种无效情况*/
            {
                right=Bracket_r(right);
            }
            Operator_2();/*无乘除*/
        }
        Operands_2();  /*因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
        for(int i=0;i<left-right;i++)
        {
            cout<<")";
        }
        cout<<" = "<<endl;
    }
    void Way_3() /*最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            Opreands_1(); /*-9-9除0*/
            Operator_1(); /*有乘除*/
        }
        Opreands_1();  /* 因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
        cout<<" = "<<endl;
    }
    void Way_4()  /*最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            Operands_2();  /*产生操作数 (-9 -- 9)*/
            Operator_2(); /*无乘除*/
        }
        Operands_2();  /* 因为 一个操作数一个运算符   还缺少一个操作数 (-9 -- 9)*/
        cout<<" = "<<endl;
    }
    void Way_5()  /*最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) 0-9  加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            cout<<rand()%9+1; /*1-9除0*/
            Operator_1(); /*有乘除*/
        }
        cout<<rand()%9+1;  /* 因为 一个操作数一个运算符   还缺少一个操作数 (1 -- 9)*/
        cout<<" = "<<endl;
    }
    void Way_6()  /*最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数*/
    {
        int length=rand()%9+2; /*随机产生表达式中操作数的个数 2-10 个*/
        int left=0,right=0,flag=0,left_1;
        for(int i=0;i<length-1;i++)
        {
            cout<<rand()%10;  /*产生操作数 (0-- 9)*/
            Operator_2(); /*无乘除*/
        }
        cout<<rand()%10;  /* 因为 一个操作数一个运算符   还缺少一个操作数 (0-- 9)*/
        cout<<" = "<<endl;
    }
    void main() /*主函数*/
    {
        srand((unsigned)time(0));
        cout<<"--------------------------------------------------------------------------"<<endl;
        cout<<"最多可支持10个数参与计算  有乘除 有括号 -9到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_1();
        }
        cout<<"--------------------------------------------------------------------------"<<endl;
        cout<<"最多可支持10个数参与计算  无乘除 有括号 -9到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_2();
        }
        cout<<"--------------------------------------------------------------------------"<<endl;
        cout<<"最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_3();
        }
        cout<<"--------------------------------------------------------------------------"<<endl;
        cout<<"最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) -9到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_4();
        }
        cout<<"最多可支持10个数参与计算  有乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_5();
        }
        cout<<"最多可支持10个数参与计算  无乘除 无括号(负数用括号括起来) 0到9  加减有负数 除法有余数"<<endl;
        for(int num=0;num<30;num++)
        {
            cout<<num+1<<"、 ";
            Way_6();
        }
    }

  • 相关阅读:
    CocoaPods的安装和使用
    HTTP协议(一)
    iOS常用设计模式之观察者模式
    git使用方法
    关于网络开发中XML的使用
    观察者模式的具体应用——通知(notification)机制和KVO(KeyValueObserving)机制
    HTTP协议(二)之HTTP请求
    iOS常用设计模式之委托模式
    x ^y mod m
    Problem A: 速算24点
  • 原文地址:https://www.cnblogs.com/L-Damon-v/p/5269525.html
Copyright © 2011-2022 走看看