结对编程---四则运算

发布时间 2023-04-12 20:52:27作者: 痴儿倚晚晴

目录

一、实验目的

二、实验内容

三、实验代码

四、实验结果

五、实验心得

一、实验目的

  通过两位同学组队用结对编码(两位位同学轮流coding,另一个同学在旁边审核代码)的方式完成本次实验。本次实验需要设计一个四则运算练习题的随机出题程序,可以通过C/C++/Java/Python等语言进行实现,四则运算练习题需要一或两个运算符,100以内的数字,不需要写答案,但是需要再输入答案之后检查答案是否正确并保证答案在0-100之间。

二、实验内容

  编写一个四则运算程序(c/c++),限制100以内的数字,运算符1-2个,并检查答案是否正确。

三·、实验代码

队员A(2152211)编写部分:

 void DisplayFenshu(int a[][2],int w,int m) {
     if(w==1) {
         for(int q=0; q<m; q++) {
             if(a[q][0]==0)
                 cout<<"0"<<'\t';
             else
                 cout<<a[q][0]<<"/"<<a[q][1]<<'\t';
             if(q%5==4) {
                 cout<<endl;
             }
         }
     } else {
     };
 }
 void DealInt(int m,int a[]) {
 
     for(int p=0; p<m; p++) {
         int i=(int)rand()%10;
         int j=(int)rand()%10;
         int k=(int)rand()%100/25;
         switch(k) {
             case 0:
                 cout<<i<<"+"<<j<<"=";
                 a[p]=i+j;
                 break;
             case 1:
                 cout<<i<<"-"<<j<<"=";
                 a[p]=i-j;
                 break;
             case 2:
                 cout<<i<<"*"<<j<<"=";
                 a[p]=i*j;
                 break;
             case 3:
                 try {
                     a[p]=i/j;
                     cout<<i<<"/"<<j<<"=";
                 } catch(...) {
                     p--;
                 }
 
         }
 
         if(p%5==4) {
             cout<<endl;
         } else {
             cout<<'\t';
         }
     }
 }

 

队员B(2052643)编写部分:

 void DisplayInt(int a[],int w,int m) {
     if(w==1) {
         for(int q=0; q<m; q++) {
             cout<<a[q]<<'\t';
             if(q%5==4) {
                 cout<<endl;
             }
         }
     } else {
     };
 }
 void DealFenshu(int m, int a[][2]) {
     for(int p=0; p<m; p++) {
         int i=(int)rand()%10;
         int j=(int)rand()%10;
         while(j==0||i>=j) {
             i=(int)rand()%10;
             j=(int)rand()%10;
         }
         int x=(int)rand()%10;
         int y=(int)rand()%10;
         while(y==0||x>=y) {
             x=(int)rand()%10;
             y=(int)rand()%10;
         }
         int k=(int)rand()%100/25;
         switch(k) {
             case 0:
                 cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
                 a[p][0]=i*y+x*j;
                 a[p][1]=j*y;
                 break;
             case 1:
                 cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
                 a[p][0]=i*y-x*j;
                 a[p][1]=j*y;
                 break;
             case 2:
                 cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
                 a[p][0]=i*x;
                 a[p][1]=j*y;
                 break;
             case 3:
                 a[p][0]=i*y;
                 a[p][1]=j*x;
                 cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
         }
         if(p%5==4) {
             cout<<endl;
         } else {
             cout<<'\t';
         }
     }
 }

 

队员C(2152219)编写部分:

 int main() {
     int p;
     do {
         system("cls");
         int a[1000],b[1000][2];
         int m,n,w;
         cout<<"请输入生成的四则运算题个数:";
         cin>>m;
         cout<<endl;
         cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
         cin>>n;
         cout<<endl;
         if(n==1) {
             DealInt(m,a);
             cout<<endl;
         } else {
             DealFenshu(m,b);
             cout<<endl;
         }
         cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
         cin>>w;
         if(n==1) {
             DisplayInt(a,w,m);
         } else {
             DisplayFenshu(b,w,m);
         }
         cout<<endl;
         cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
         cin>>p;
         cout<<endl;
     } while(1==p);
 }

 

四、实验结果

 

 五、实验心得

  我们代码都是结对一起写的,一些单元测试和一些小修小改是分开进行的,然后结对的时候交流更改了什么。结对编程确实大大提高了攻坚的效率,而且代码的质量确实更高了,单元测试很少测出错误。但是在我们的实践中并没有提高对需求的覆盖,仍旧时不时遗忘一些不重要的需求。而对于这一次结对编程,队友之间的相互配合真的很重要,三人完成自己的部分从而可以顺利的组合会让整个过程变得更加的流程。再者,函数的正确命名以及适当的注释非常重要,利于代码组合以后的修改与维护。