• 课堂练习3


    //2016.3.15 唐野野,胡潘华
    #include<stdio.h>
    #include<iostream>
    #include<time.h>
    #include<fstream>
    #include<ostream>
    #include<string>
    #include<stdlib.h>
    using namespace std;
    #define MAX N
    
    
    /*无打印功能的无括号算式*/
    //int a(void)
    //{   
            
    //}
    
    
    /*有打印功能的无括号算式*/
    //int b(void)
    //{
    //}
    
    /*无打印功能的带括号的算式*/
    int q(void)
    {
        srand((unsigned)time(NULL));
        int i,j,x,a,b,c,d,n3,c2,v1,h1;
        int y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y0;
        char t0[20],t1[20],t2[20],t3[20],t4[20],t5[20],t6[20],t7[20],t8[20],t9[20];
        string a2,a3,a4,a5,a6,a7,a8,a9,a10;
        char b1[10],c1,d1[10];
        char a1[4]={'+','-','*','/'};
        char p[10];
        char p1[10],p2[10];
        int N;
        
        cout<<"请输入题目的数量!"<<endl;
        cin>>i;
        cout<<"请输入多少数以内的四则运算"<<endl;
        cin>>N;
        //cout<<"是否有乘除号?(1是,0否)"<<endl;
        //cin>>x;
        
        for(j=0;j<i;j++)
        {
            int yzero=rand()%3;//定义z0..z9所匹配的项目
            int yone=rand()%3;
            int ytwo=rand()%3;
            int ythree=rand()%3;
            int yfour=rand()%3;
            int yfive=rand()%3;
            int ysix=rand()%3;
            h1=rand()%10;//定义生成表达式里数的个数
            y0=rand()%N;itoa(y0,t0,10);string z0=t0;
            y1=rand()%N;itoa(y1,t1,10);string z1=t1;
            y2=rand()%N;itoa(y2,t2,10);string z2=t2;
            y3=rand()%N;itoa(y3,t3,10);string z3=t3;
            y4=rand()%N;itoa(y4,t4,10);string z4=t4;
            y5=rand()%N;itoa(y5,t5,10);string z5=t5;
            y6=rand()%N;itoa(y6,t6,10);string z6=t6;
            y7=rand()%N;itoa(y7,t7,10);string z7=t7;
            y8=rand()%N;itoa(y8,t8,10);string z8=t8;
            y9=rand()%N;itoa(y9,t9,10);string z9=t9;
    
            int l=rand()%4;
            a2=z0+a1[l]+z1;
    
            l=rand()%4;
             switch(yzero){
             case 0:
                 {a3='('+a2+')'+a1[l]+z2;break;}
             case 1:
                 {a3=z2+a1[l]+'('+a2+')';break;}
             case 3:
                 {a3=a2+a1[l]+z2;break;}
             }
             l=rand()%4;
             switch(yone){
             case 0:
                  {a4='('+a3+')'+a1[l]+z3;break;}
             case 1:
                  {a4=z3+a1[l]+'('+a3+')';break;}
             case 2:
                  {a4=z3+a1[l]+a3;break;}
               }
             l=rand()%4;
             switch(ytwo){
             case 0:
                 {a5='('+a4+')'+a1[l]+z4;break;}
             case 1:
                 {a5=z4+a1[l]+'('+a4+')';break;}
             case 2:
                 {a5=z4+a1[l]+a4;break;}
               }
             l=rand()%4;
             switch(ythree){
             case 0:
                 {a6='('+a5+')'+a1[l]+z5;break;}
             case 1:
                 {a6=z5+a1[l]+'('+a5+')';break;}
             case 2:
                 {a6=z5+a1[l]+a5;break;}
                 }
             l=rand()%4;
             switch(yfour){
             case 0:
             {a7='('+a6+')'+a1[l]+z6;break;}
             case 1:
             {a7=z6+a1[l]+'('+a6+')';break;}
             case 2:
             {a7=z6+a1[l]+a6;break;}
                  }
             l=rand()%4;
             switch(yfive){
             case 0:
             {a8='('+a7+')'+a1[l]+z7;break;}
             case 1:
             {a8=z7+a1[l]+'('+a7+')';break;}
             case 2:
             {a8=z7+a1[l]+a7;break;}
                  }
             l=rand()%4;
             switch(ysix){
             case 0:
             {a9='('+a8+')'+a1[l]+z8;break;}
             case 1:
             {a9=z8+a1[l]+'('+a8+')';break;}
             case 2:
             {a9=z8+a1[l]+a8;break;}
                 }
              
             int  n2=rand()%3;
             switch(h1){
                case 0:
                     {j=j-1;break;}
                case 1:
                     {j=j-1;break;}
                case 2:
                     {a2=z0+a1[l]+z1;
                     cout<<a2<<endl;break;}
                case 3:
                     {
                         if(n2==2)
                         {a3='('+a2+')'+a1[l]+z2;
                         cout<<a3<<endl;break;}
                         if(n2==1)
                         {a3=z2+a1[l]+'('+a2+')';
                         cout<<a3<<endl;break;}
                         if(n2==0)
                         {a3=a2+a1[l]+z2;
                         cout<<a3<<endl;break;}
                     }
                 case 4:
                     {
                         if(n2==2)
                         {a4='('+a3+')'+a1[l]+z3;
                         cout<<a4<<endl;break;}
                         if(n2==1)
                         {a4=z3+a1[l]+'('+a3+')';
                         cout<<a4<<endl;break;}
                         if(n2==0)
                         {a4=z3+a1[l]+a3;
                         cout<<a4<<endl;break;}
                     }
                 case 5:
                     {
                         if(n2==2)
                        {a5='('+a4+')'+a1[l]+z4;
                         cout<<a5<<endl;break;}
                         if(n2==1)
                         {a5=z4+a1[l]+'('+a4+')';
                        cout<<a5<<endl;break;}
                         if(n2==0)
                        {a5=z4+a1[l]+a4;
                        cout<<a5<<endl;break;}
                     }
                 case 6:
                     {
                         if(n2==2)
                         {a6='('+a5+')'+a1[l]+z5;
                         cout<<a6<<endl;break;}
                         if(n2==1)
                        {a6=z5+a1[l]+'('+a5+')';
                        cout<<a6<<endl;break;}
                         if(n2==0)
                         {a6=z5+a1[l]+a5;
                         cout<<a6<<endl;break;}
                     }
                 case 7:
                     {
                         if(n2==2)
                         {a7='('+a6+')'+a1[l]+z6;; 
                        cout<<a7<<endl;break;}
                         else if(n2==1)
                         {a7=z6+a1[l]+'('+a6+')';
                         cout<<a7<<endl;break;}
                        else if(n2==0)
                         {a7=z6+a1[l]+a6;
                         cout<<a7<<endl;break;}
                     }
                 case 8:
                     {
                         if(n2==2)
                        {a8='('+a7+')'+a1[l]+z7;
                         cout<<a8<<endl;break;}
                         if(n2==1)
                         {a8=z7+a1[l]+'('+a7+')';
                         cout<<a8<<endl;break;}
                         if(n2==0)
                         {a8=z7+a1[l]+a7;
                         cout<<a8<<endl;break;}
                     }
                case 9:
                    {
                         if(n2==2)
                         {a9='('+a8+')'+a1[l]+z8;
                         cout<<a9<<endl;break;}
                         if(n2==1)
                         {a9=z8+a1[l]+'('+a8+')';
                         cout<<a9<<endl;break;}
                         if(n2==0)
                         {a9=z8+a1[l]+a8;
                         cout<<a9<<endl;break;}
     
                    }
             }
             }
             return 0;
                
    
    }
    int liunianji(void)
    {
        int h;
        cout<<"是否要给六年级同学出题:"<<endl;
        cin>>h;
        if(h==1)
        {
            srand((unsigned)time(NULL));
        int i,j,x,a,b,c,d,n3,c2,v1,h1;
        int y,y1,y2,y3,y4,y5,y6,y7,y8,y9,y0;
        char t0[20],t1[20],t2[20],t3[20],t4[20],t5[20],t6[20],t7[20],t8[20],t9[20];
        string p2,p3,p4,p5,p6,p7,p8,p9,p10;
        char b1[10],c1,d1[10];
        char a1[4]={'+','-','*','/'};
        char a2[10];
        char aj;
        int  a4[4]={1,1,2,2};
        int  a5[10];
        char p[10];
        char p1[10],o[10];
        
        int N;
        
        cout<<"请输入题目的数量!"<<endl;
        cin>>i;
        int  b2[10],a3[100],s1[100];
        cout<<"请输入多少数以内的四则运算"<<endl;
        cin>>N;
        //cout<<"是否有乘除号?(1是,0否)"<<endl;
        //cin>>x;
        
        for(j=0;j<i;j++)
        {
            int yzero=rand()%3;//定义z0..z9所匹配的项目
            int yone=rand()%3;
            int ytwo=rand()%3;
            
            //定义生成表达式里数的个数
            y0=rand()%N;itoa(y0,t0,10);string z0=t0;
            y1=rand()%N;itoa(y1,t1,10);string z1=t1;
            y2=rand()%N;itoa(y2,t2,10);string z2=t2;
            y3=rand()%N;itoa(y3,t3,10);string z3=t3;
            y4=rand()%N;itoa(y4,t4,10);string z4=t4;
            y5=rand()%N;itoa(y5,t5,10);string z5=t5;
           
            int l=rand()%4;
            p2=z0+a1[l]+z1;
            if(a1[l]=='+')
            {b2[0]=y0+y1;}
            if(a1[l]=='-')
            {b2[0]=y0-y1;}
            if(a1[l]=='*')
            {b2[0]=y0*y1;}
            if(a1[l]=='/')
            {b2[0]=y0/y1;}
            a5[0]=a4[l];
            a2[0]=a1[l];
            
    
             l=rand()%4;
            
             a5[1]=a4[l];
             a2[1]=a1[l];
             switch(yzero){
             case 0:
                 {
                     p3='('+p2+')'+a1[l]+z2;
                     if(a1[l]=='+')
                     {b2[1]=b2[0]+y2;}
                     if(a1[l]=='-')
                     {b2[1]=b2[0]-y2;}
                     if(a1[l]=='*')
                     {b2[1]=b2[0]*y2;}
                     if(a1[l]=='/')
                     {b2[1]=b2[0]/y2;}
    
                 }
                 break;
             case 1:
                 {p3=z2+a1[l]+'('+p2+')';
                  if(a1[l]=='+')
                 {b2[1]=b2[0]+y2;}
                  if(a1[l]=='-')
                 {b2[1]=b2[0]-y2;}
                  if(a1[l]=='*')
                 {b2[1]=b2[0]*y2;}
                  if(a1[l]=='/')
                 {b2[1]=b2[0]/y2;}
                 }break;
             case 2:
                 { p3=p2+a1[l]+z2;
                   a5[1]=a4[l];
                   if(a5[0]>=a5[1])
                  {if(a1[l]=='+')
                  {b2[1]=b2[0]+y2;}
                   if(a1[l]=='-')
                  {b2[1]=b2[0]-y2;}
                   if(a1[l]=='*')
                  {b2[1]=b2[0]*y2;}
                   if(a1[l]=='/')
                  {b2[1]=b2[0]/y2;}
                 }
                   if(a5[0]<a5[1])
                   {
                       int n1;
                       n1=a5[0];
                       a5[0]=a5[1];
                       a5[1]=n1;
                       aj=a2[0];
                       a2[0]=a2[1];
                       a2[1]=aj;
                       if(a2[0]=='+')
                       {
                           if(a1[l]=='*'){
                           b2[1]=y1*y2;
                           b2[1]=b2[1]+y0;
                           }
                           if(a1[l]=='/'){
                           b2[1]=y1/y2;
                           b2[1]=b2[1]+y0;
                           }
    
                       }
                        if(a2[0]=='-')
                       {
                           if(a1[l]=='*'){
                           b2[1]=y1*y2;
                           b2[1]=b2[1]-y0;
                           }
                           if(a1[l]=='/'){
                           b2[1]=y1/y2;
                           b2[1]=b2[1]-y0;
                           }
    
                       }
    
                   }
    
                   }
    
            
            break;
             }
    
    
            
            l=rand()%4;
            a5[2]=a4[l];
            a2[2]=a1[l];
             switch(yone){
             case 0:
                  {p4='('+p3+')'+a1[l]+z3;
                    if(a1[l]=='+')
                    {b2[2]=b2[1]+y3;}
                    if(a1[l]=='-')
                    {b2[2]=b2[1]-y3;}
                    if(a1[l]=='*')
                    {b2[2]=b2[1]*y3;}
                    if(a1[l]=='/')
                    {b2[2]=b2[1]/y3;}
                  }
             case 1:
                  {p4=z3+a1[l]+'('+p3+')';
                   if(a1[l]=='+')
                    {b2[2]=b2[1]+y3;}
                    if(a1[l]=='-')
                    {b2[2]=b2[1]-y3;}
                    if(a1[l]=='*')
                    {b2[2]=b2[1]*y3;}
                    if(a1[l]=='/')
                    {b2[2]=b2[1]/y3;}}
             case 2:
                  {p4=z3+a1[l]+p3;
                  a5[2]=a4[l];
                  if(a5[0]>a5[2])
                  {if(a1[l]=='+')
                  {b2[2]=b2[1]+y2;}
                   if(a1[l]=='-')
                  {b2[2]=b2[1]-y2;}
                   if(a1[l]=='*')
                  {b2[2]=b2[1]*y2;}
                   if(a1[l]=='/')
                  {b2[2]=b2[1]/y2;}
                   }
    
                  if(a5[0]==a5[2])
                  {
                      if(a1[l]=='+'){
                          if(a2[0]=='+'){
                              if(a2[1]=='+'){
                                  b2[2]=y0+y1;
                                  b2[2]=b2[2]+y3;
                                  b2[2]=b2[2]+y3;
                              }
                              if(a2[1]=='-'){
                                  b2[2]=y0+y1;
                                  b2[2]=b2[2]-y3;
                                  b2[2]=b2[2]+y3;
                              }
                          }
                          if(a2[0]=='-'){
                              if(a2[l]=='+'){
                                  b2[2]=y0-y1;
                                  b2[2]=b2[2]+y3;
                                  b2[2]=b2[2]+y3;
                              }
                              if(a2[l]=='-'){
                                  b2[2]=y0-y1;
                                  b2[2]=b2[2]-y3;
                                  b2[2]=b2[2]+y3;
                              }
                          }
                      
                      }
                      if(a1[l]=='-'){
                          if(a2[0]=='+'){
                              if(a2[l]=='+'){
                                  b2[2]=y0+y1;
                                  b2[2]=b2[2]+y3;
                                  b2[2]=b2[2]-y3;
                              }
                              if(a2[l]=='-'){
                                  b2[2]=y0+y1;
                                  b2[2]=b2[2]-y3;
                                  b2[2]=b2[2]-y3;
                              }
                          }
                          if(a2[0]=='-'){
                              if(a2[l]=='+'){
                                  b2[2]=y0-y1;
                                  b2[2]=b2[2]+y3;
                                  b2[2]=b2[2]-y3;
                              }
                              if(a2[1]=='-'){
                                  b2[2]=y0-y1;
                                  b2[2]=b2[2]-y3;
                                  b2[2]=b2[2]-y3;
                              }
                          }
                      }
                      if(a1[l]=='*'){
                         if(a2[1]=='+'){
                             if(a2[0]=='*')
                          {int ax=y0*y1;int bx=y2*y3;b2[2]=ax+bx;}
                              if(a2[0]=='/')
                              {int ax=y0/y1;int bx=y2*y3;b2[2]=ax+bx;}}
                               if(a2[1]=='-'){
                             if(a2[0]=='*')
                          {int ax=y0*y1;int bx=y2*y3;b2[2]=ax-bx;}
                              if(a2[0]=='/')
                              {int ax=y0/y1;int bx=y2*y3;b2[2]=ax-bx;}}
                               if(a2[1]=='*'||'/')
                               {b2[2]=b2[1]*y3;}
    
                      }
                      if(a1[l]=='/'){
                         if(a2[1]=='+'){
                             if(a2[0]=='*')
                          {int ax=y0*y1;int bx=y2/y3;b2[2]=ax+bx;}
                              if(a2[0]=='/')
                              {int ax=y0/y1;int bx=y2/y3;b2[2]=ax+bx;}}
                               if(a2[1]=='-'){
                             if(a2[0]=='*')
                          {int ax=y0*y1;int bx=y2/y3;b2[2]=ax-bx;}
                              if(a2[0]=='/')
                              {int ax=y0/y1;int bx=y2/y3;b2[2]=ax-bx;}}
                               if(a2[1]=='*'||'/')
                               {b2[2]=b2[1]/y3;}
    
                      }
    
    
               }
                  if(a5[0]<a5[2])
                  {
                            if(a1[l]=='*'){
                          if(a2[0]=='+'){
                              if(a2[1]=='+'){
                                  b2[2]=y3*y2;
                                  b2[2]=b2[2]+y0;
                                  b2[2]=b2[2]+y1;
                              }
                              if(a2[1]=='-'){
                                  b2[2]=y3*y2;
                                  int xz=y0+y1;b2[2]=xz-b2[2];
                                  
                              }
                          }
                          if(a2[0]=='-'){
                              if(a2[l]=='+'){
                                  b2[2]=y3*y2;
                                  int at=y0-y1;
                                  b2[2]=y2+b2[2];
                              }
                              if(a2[l]=='-'){
                                  b2[2]=y3*y2;
                                  int ap=y0-y1;
                                  b2[2]=y2-b2[2];
                              }
                          }
                      
                      }
                      if(a1[l]=='/'){
                          if(a2[0]=='+'){
                              if(a2[1]=='+'){
                                  b2[2]=y3/y2;
                                  b2[2]=b2[2]+y0;
                                  b2[2]=b2[2]+y1;
                              }
                              if(a2[1]=='-'){
                                  b2[2]=y3/y2;
                                  int xz1=y0+y1;b2[2]=xz1-b2[2];
                                  
                              }
                          }
                          if(a2[0]=='-'){
                              if(a2[l]=='+'){
                                  b2[2]=y3/y2;
                                  int at1=y0-y1;
                                  b2[2]=y2+b2[2];
                              }
                              if(a2[l]=='-'){
                                  b2[2]=y3/y2;
                                  int ap1=y0-y1;
                                  b2[2]=y2-b2[2];
                              }
                          }
                      
                  }
                  }
    }
                  break;
             
     }
            
            
             h1=rand()%2+3; 
             int  n2=rand()%3;
             switch(h1){
               
                case 2:
                     {p2=z0+a1[l]+z1;
                     cout<<p2<<endl;
                     s1[j]=b2[0];}break;
                case 3:
                     {
                         if(n2==2)
                         {p3='('+p2+')'+a1[l]+z2;
                         cout<<p3<<endl;}
                         if(n2==1)
                         {p3=z2+a1[l]+'('+p2+')';
                         cout<<p3<<endl;}
                         if(n2==0)
                         {p3=p2+a1[l]+z2;
                         cout<<p3<<endl;}
                         s1[j]=b2[1];
                     }
                break;
                 case 4:
                     {
                         if(n2==2)
                         {p4='('+p3+')'+a1[l]+z3;
                         cout<<p4<<endl;break;}
                         if(n2==1)
                         {p4=z3+a1[l]+'('+p3+')';
                         cout<<p4<<endl;break;}
                         if(n2==0)
                         {p4=z3+a1[l]+p3;
                         cout<<p4<<endl;break;}
                         s1[j]=b2[2];
                     }break;
                
    
             
             }
             
             cout<<"请输入你的答案:"<<endl;
            cin>>v1;
            a3[j]=v1;
            
            if(a3[j]==s1[j])
            {
                int g1=g1+1;
                cout<<"答对了,真棒!!"<<endl;
                cout<<"你已答对了"<<g1<<"道题"<<endl;
            }
            if(a3[j]!=s1[j])
            {
                j=j-1;
                cout<<"答错了,还需多加努力!"<<endl;
            }
              }
             }
             
        return 0;
    }
    /*有打印功能的带括号算式*/
    //int p(void)
    //{
        
    //}
    
    int main(void)
    {
        int n,n1;
        cout<<"是否有括号?(1有,0否)"<<endl;
        cin>>n1;
         
        if(n1==1)
            {
              cout<<"是否打印?(1存入文档,0否)"<<endl;
              cin>>n;
              if(n==0)
              {
    
                q();
              
              }
              //if(n==1)
            //  {
            //      p();
              //
             // }
        //    }
        
      //if(n1==0)
        //{
            //  cout<<"是否打印?(1存入文档,0否)"<<endl;
              //cin>>n;
            
              //if(n==1)
              //{
               //b();
              //}
    
              //if(n==0)
              //{ 
                //a();
            //  }
      //}
            
    }
        liunianji();
    return 0;
    }


    本次作业的题目:

    在四则运算2的基础上,再添加一些条件,总共要求满足如下条件:

    1.题目避免重复。

    2.可制定。(数量/打印方式)

    3.可以控制下列参数:

    • 是否有乘除法
    • 是否有括号(最多可支持10个数参与计算)
    • 数值范围
    • 加减有无负数
    • 乘除有无余数

    (新要求)

    4.学生写的程序必须能判定用户的输入答案是否正确

    5.程序必须能处理混合四则运算

    个人体会:

          这次实验是相对失败的一次,因为在周五就基本完成了任务,后来心想能增加功能,反而在更改的过程中,出现诸多失误。不过我们小组保证,在接下来的程序里,我们定会好好努力去完成。

    项目计划总结:

    日期&&任务 听课 编写程序 阅读相关书籍 网上查找资料 日总计
    周一 100 0 25 15 140
    周二   180 0 0 180
    周三   100 0 0 100
    周四 100   30 25 155
    周五   180     180
    周六    100 60 15 175
    周日     30   30
    周总计 200 560 145 55 960

    时间记录日志  

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3/14 14:00 15:50 10 100 听课 上课
      19:10 19:30   25 阅读书籍 《构建之法》
      21:00 21:25   20 网上查找资料  
    3/15 19:00 22:00 10 180 编程  
    3/16 20:00 21:40   100 编程  
    3/17 14:00 15:50 10 100 听课 软件工程上课
      19:00 19:30   30 看书 《构建之法》
      20:00 20:25   25 查阅资料  
    3/18 16:00 19:00   180 编程  
    3/19 9:00 11:00  20 100 编程  
      14:00 15:00   60 看书 《构架之法》
      15:50 16:05   15 查资料  
    3/20 19:00 19:30   30 看书 《构建之法》

    缺陷记录日志:

           

    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3月15日 1  数据定义错误 编码 编码 10min  
      重复定义数据
      2 逻辑结构错误  编码 运行 50min  
      使用变量g时,在循环中重复定义g=0
    3月17日 3  数组问题 编码 编译 60min  
      用数组解决符号优先级问题
      4  循环语句逻辑出错 编码 编译 1min  
      缺少结束语break

    合作照片:

    小组成员:唐野野http://www.cnblogs.com/tyyhph/,胡潘华。

  • 相关阅读:
    团队项目 NABCD介绍
    java web项目通过外网ip访问
    第七周总结
    全球疫情可视化展示
    第六周总结
    软工小队——团队介绍
    Android端疫情数据统计与现实——Android连接Mysql
    android SDK SDK Manager.exe 无法打开,一闪而过最终解决办法 (转)
    第五周总结
    Java代码编写规范(转)
  • 原文地址:https://www.cnblogs.com/hph1313/p/5296215.html
Copyright © 2020-2023  润新知