课堂练习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/,胡潘华。

posted @ 2016-03-19 20:25  就是潘金莲的野野鬼  阅读(131)  评论(1编辑  收藏  举报