首页 > 编程语言 >结对编程

结对编程

时间:2023-04-09 17:45:15浏览次数:27  
标签:结对 key0 return double 编程 运算符 &&

一、实验目的

     本次学习的任务是通过两人结对编程的方式,来体会团队合作的过程。整个任务是由2152222和我共同完成。具体是编写一个出四则运算的程序。

     要求如下:

  • 小学老师要每周给同学出300道四则运算练习题
  • 这个程序有很多种实现方式:
C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
  •  一或两个运算符(a+b或a+b+c),100以内的数字,不需要写答案。

  • 需要检查答案是否正确,并且保证答案在0...100之间
  • 尽可能地多设置一些条件

 

二、实验具体内容与过程

编写语言:C++

实现功能:

  • 系统能够生成运算的答案来与用户输入的答案进行核对
  • 每次出一道题来让用户做计算
  • 能够判断用户输入答案的对错,如果错误则显示正确的答案
  • 两个数作四则运算和三个数作四则运算均实现
  • 能够统计正确的次数

编写大致过程:

      在整个程序的编写过程中,我和同伴不断交流讨论,一个人进行编写,另外一个人在旁边复审,然后过一段时间进行角色互换,通过这种方式完成了本次的学习任务。在程序中,我们通过使用随机数求余的方式来随机生成运算数和运算符。由于运算符有四个,因此同伴提出用随机数对四求余加上最小运算符的ASCII码值来生成运算符并存入字符变量中,但是四个运算符的ASCII码并不是相邻的,因此这种方式具有一定的复杂性。我提出直接对四求余,其数字结果与运算符一一对应,这或许是一种更为简单的处理方式。

      此外,由于每次生成的算式结果不一定在0-100以内,因此我们要对结果进行判断。当我想要解决300次循环,每次都能成功生成算式输出的问题时,想要在for(i=0-300)的循环里添加一个while循环来判断每次运算结果,却不知道该怎么处理首次循环的时候,同伴针对性地提出了do while的结构,令我拍手叫好,从而能够正确地处理这个问题。诸如此类的情况还有很多。

 

代码:

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<math.h>
using namespace std;

//void Calc_twonum()
//{
    
//}

double Calc_two(int x,int y,char Operator) 
{
    switch(Operator) 
    {
        case '+':return (double)x+y;
                 break;
        case '-':return (double)x-y;
                 break;
        case '*':return (double)x*y;
                 break;
        case '/':return (double)x/y;
                 break;
    }
    return -1;
}

void Calc_twonum()
{
    srand(time(NULL));
    int i,op,x,y;
    double key;double ans;
    int correct_count=0;int total_count=0;
    for(i=0;i<300;i++)
    {
        
        do
        {
            op=rand()%4;//0代表+,1代表-,2代表*,3代表/ 
            x = rand() % 100 + 1; // 生成1到100之间的随机整数
            y = rand() % 100 + 1;
            switch(op)
            {
                case 0:
                        key=Calc_two(x,y,'+');
                    if(key>0&&key<100)cout<<x<<"+"<<y<<"="<<endl;
                        else continue;
                    break;
                case 1:
                    key=Calc_two(x,y,'-');
                    if(key>0&&key<100)cout<<x<<"-"<<y<<"="<<endl;
                        else continue;
                    break;
                case 2:
                    key=Calc_two(x,y,'*');
                    if(key>0&&key<100)cout<<x<<"*"<<y<<"="<<endl;
                        else continue;
                    break;
                case 3:
                    key=Calc_two(x,y,'/');
                    if(key>0&&key<100)cout<<x<<"/"<<y<<"="<<endl;
                        else continue;
                        break;
            }
        }while(key>100||key<0);
        key = round(key * 100);
        key = key / 100;
        cout<<"请输入答案:";
        cin>>ans;
        if (ans == key)
        {
            correct_count++;
            cout<<"回答正确!"<<endl<<endl;
        }
        else 
        {
            cout<<"回答错误!正确答案是:"<<key<<endl<<endl;
        }
    }
}

double Calc_three(int x,int y,int z,char operator1,char operator2) 
{
    switch(operator1) 
    {
        case '+':
            
            if(operator2=='+')     return (double)x+y+z;
            if(operator2=='-')  return (double)x+y-z;
            if(operator2=='*')  return (double)y*z+x;
            if(operator2=='/')  return (double)y/z+x;
            break;
        case '-':
            if(operator2=='+') return (double)x-y+z;
            if(operator2=='-') return (double)x-y-z;
            if(operator2=='*') return (double)-y*z+x;
            if(operator2=='/') return (double)-y/z+x;
            break;
        case '*':
            if(operator2=='+') return (double)x*y+z;
               if(operator2=='-') return (double)x*y-z;
               if(operator2=='*') return (double)x*y*z;
            if(operator2=='/') return (double)x*y/z;
            break;
        case '/':
            if(operator2=='+') return (double)x/y+z;
            if(operator2=='-') return (double)x/y-z;
            if(operator2=='*') return (double)x/y*z;
            if(operator2=='/') return (double)x/y/z;
            break;
    }
    return -1;
}

void Calc_threenum()
{
    srand(time(NULL)); // 用当前时间作为随机数种子
    int i,op1,op2,x,y,z;
    double key;double ans;
    int correct_count=0;int total_count=0;
    for(i=0;i<300;i++)
    {
        
        do
        {
            //cout<<i<<endl;
            op1=rand()%4;op2=rand()%4;//0代表+,1代表-,2代表*,3代表/ 
            //cout<<op1<<" "<<op2<<endl;
            x = rand() % 100 + 1; // 生成1到100之间的随机整数
            y = rand() % 100 + 1;
               z = rand() % 100 + 1;
            //cout<<x<<" "<<y<<" "<<z<<endl;
            switch(op1)
            {
                case 0:
                    if(op2==0)
                    {
                        key=Calc_three(x,y,z,'+','+');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"+"<<y<<"+"<<z<<"="<<endl;
                        else continue;    
                    }
                    if(op2==1)
                    {
                        key=Calc_three(x,y,z,'+','-');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"+"<<y<<"-"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==2)
                    {
                        key=Calc_three(x,y,z,'+','-');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"+"<<y<<"-"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==3)
                    {
                        key=Calc_three(x,y,z,'+','*');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"+"<<y<<"*"<<z<<"="<<endl;
                        else continue;
                    }
                    break;
                case 1:
                    if(op2==0)
                    {
                        key=Calc_three(x,y,z,'-','+');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"-"<<y<<"+"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==1)
                    {
                        key=Calc_three(x,y,z,'-','-');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"-"<<y<<"-"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==2)
                    {
                        key=Calc_three(x,y,z,'-','*');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"-"<<y<<"*"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==3)
                    {
                        key=Calc_three(x,y,z,'-','/');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"-"<<y<<"/"<<z<<"="<<endl;
                        else continue;
                    }
                    break;
                case 2:
                    if(op2==0)
                    {
                        key=Calc_three(x,y,z,'*','+');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"+"<<y<<"*"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==1)
                    {
                        key=Calc_three(x,y,z,'*','-');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"*"<<y<<"-"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==2)
                    {
                        key=Calc_three(x,y,z,'*','*');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"*"<<y<<"*"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==3)
                    {
                        key=Calc_three(x,y,z,'*','/');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"*"<<y<<"/"<<z<<"="<<endl;
                        else continue;
                    }
                    break;
                case 3:
                    if(op2==0)
                    {
                        key=Calc_three(x,y,z,'/','+');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"/"<<y<<"+"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==1)
                    {
                        key=Calc_three(x,y,z,'/','-');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"/"<<y<<"-"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==2)
                    {
                        key=Calc_three(x,y,z,'/','*');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"/"<<y<<"*"<<z<<"="<<endl;
                        else continue;
                    }
                    if(op2==3)
                    {
                        key=Calc_three(x,y,z,'/','/');
                        //cout<<"key="<<key<<endl;
                        if(key>0&&key<100)cout<<x<<"/"<<y<<"/"<<z<<"="<<endl;
                        else continue;
                    }
                    break; 
            }
        }while(key>100||key<0);
        key = round(key * 100);
        key = key / 100;
        cout<<"请输入答案:";
        cin>>ans;
        if (ans == key)
        {
            correct_count++;
            cout<<"回答正确!"<<endl<<endl;
        }
        else 
        {
            cout<<"回答错误!正确答案是:"<<key<<endl<<endl;
        }
    }
}

int main()
{
    //Calc_threenum();
    Calc_twonum();
    return 0;
}

运行结果:

 

 

 

 三、博客体会

我:通过本次结对编程的学习,我体会到了分工协作和团队意识的重要性。在写代码的时候,如果发现了错误或者是不清楚的地方,我们会及时互相提醒进行检查,整合不同意见。通过和同伴的共同努力,我们一起解决了许多遇到的困难。同时在编程过程中对部分内容的不熟悉,如operator是一个标识符,不能将其设置为变量名等,解决这些问题花费了我一定的时间,使整个编程过程变慢下来,希望今后自己可以变得更加熟练。

同伴:我发现与同伴的交流可以促进我的一些想法,因为不断交流编写检查讨论的过程其实就是两个人的思维在碰撞的过程。而且,通过这次实践,我对结对编程的意义有了更好的体会。这种编程方式的效率比起一个人编程提高了不少,而且这种方式能够促进两个人共同进步,对两个人都有很大的益处,也让我明白了团队合作的重要性。我相信在以后的编程实践中,我会更加注重团队合作,充分发挥每个人的优势,共同创造出更加优秀的成果。

标签:结对,key0,return,double,编程,运算符,&&
From: https://www.cnblogs.com/3af487r82sd35/p/17300368.html

相关文章

  • 结对编程——小学生四则运算
    一、实验准备本次实验的内容是结对编程,我和2152426一起组队完成这次实验。实验的具体题目是小学生四则运算,其具体要求如下:多种实现方式(C/C++、C#/VB.net/Java等)两个运算符,100以内的数字,不需要写答案需要检查答案是否正确,并且保证答案在0..100之间尽可能多的设置......
  • * 编程:当前项目的根目录 c.txt 文件中的内容为”abddbskshlsjdhhhiw”;编写程序读取文
    1packageio.homework;23importjava.io.FileReader;4importjava.io.FileWriter;5importjava.io.Reader;6importjava.io.Writer;78publicclassq18{9publicstaticvoidmain(String[]args){10try(Readerfr=newFileReader......
  • 编程:利用 FileInputStream 和 FileOutputStream,完成下面的要
    (1)用FileOutputStream往当前目录下“test.txt”文件中写入“HelloWorld”;(2)利用FileInputStream读入test.txt文件,并在控制台上打印出test.txt中的内容。(3)要求用try-catch-finally处理异常,并且关闭流应放在finally块中。代码实现:importjava.io.FileInput......
  • 编程:利用 IO 流,完成以下程序:
    (1)将26个大写字母(A~Z)写入到当前项目a.txt文件中;(2)读取文件中的内容,将读取的内容连接为一个字符串,并将所有的大写字母转变为小写字母打印输出转换的结果1packageio.homework;23importjava.io.FileReader;4importjava.io.Reader;56publicclass......
  • java面向对象编程-三大特性
    面向对象三大特性封装该露的露,该藏的藏我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而应通过数据接口来访问,这称为信......
  • 结对编程
    本次结对编程作业由我和2152701一起完成1.源代码#include<cstdio>#include<cstdlib>#include<time.h>usingnamespacestd;charoperation(intoperation);floatcreateEquation();floatcalculate(intnumber1,intnumber2,intoperation);constintplus=1......
  • 结对编程——四则运算题目生成程序
    在本次结对编程中,我和2152618徐成阳一起完成了四则运算题目生成程序的编写,在这次结对编程中收获良多。在一起完成一个项目时,首先应该进行明确的分工,根据自己的特长进行分工可以大大提高效率,结对编程可以培养我们团队合作的意识,让我们更好地完成工作。以下是程序的源代码:#include......
  • Rust编程语言入门之函数式语言特性:-迭代器和闭包
    函数式语言特性:-迭代器和闭包本章内容闭包(closures)迭代器(iterators)优化改善12章的实例项目讨论闭包和迭代器的运行时性能一、闭包(1)-使用闭包创建抽象行为什么是闭包(closure)闭包:可以捕获其所在环境的匿名函数。闭包:是匿名函数保存为变量、作为参数可在一个地方......
  • 在结队编程过程中,我收获了这些 【Tutorials】
    在结队编程过程中,我收获了这些受到了编程开发领域文档设计的启发’Whatnobodytellsyouaboutdocumentation’,本文结构为四种基本博客文档结构中的Tutorials类型,旨在记录与总结,并以清晰的行文展示出来。......
  • 第七周实验——结对编程
    结对编程-四则运算练习题一、结对成员2152102&2152108 二、实验目的通过两位同学组队用结对编码(一位同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验。本次实验需要设计一个四则运算练习题的随机出题程序,可以通过C/C++/Java/Python等语言进行实现,四......