结对编程——300道小学四则运算

Posted lyy1357

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程——300道小学四则运算相关的知识,希望对你有一定的参考价值。

本次结对编程作业由我和2152620同学使用c++语言共同完成。

代码如下:

#include <iomanip>
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;
int num1[300];
int num2[300];
int op[300];
int answer[300];
int real[300];

void srand(unsigned int seed);
int getRand(int min, int max);

void get_question(int num1[],int num2[],int op[],int real[])     //数组随机填充函数 

    for(int i = 1;i<=300;i++)
        op[i]=getRand(0,3);                                      //随机生成运算符 
     
    

        for(int j = 1;j<=300;j++)
        if (op[j] == 0)
            real[j]=getRand(0,100);
            num2[j]=getRand(0,real[j]);
            num1[j]=real[j]-num2[j];
            
            
        
        else if(op[j] == 1)
            num1[j]=getRand(0,100);
            num2[j]=getRand(0,num1[j]);
            real[j]=num1[j]-num2[j];
            
            
        
        else if(op[j] == 2) 
            num1[j]=getRand(0,10);
            num2[j]=getRand(0,10);
            real[j]=num1[j]*num2[j];
            
        
        else
            real[j]=getRand(0,10);
            num2[j]=getRand(1,10);
            num1[j]=real[j]*num2[j];
            
            
        
  
 
 int getRand(int min, int max)                                        //随机数生成函数 
    return ( rand() % (max - min + 1) ) + min ;


void display_question(int num1[],int num2[],int op[],int real[])      //题目输出函数 

        for(int i = 1;i<=300;i++)
            switch(op[i])
                case 0:
                   
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" +"<<setw(3)<<num2[i]<<\'=\'<<setw(8)<<"   ";
    
                    break;
                case 1:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" -"<<setw(3)<<num2[i]<<\'=\'<<setw(8)<<"   ";
                    
                    break;
                case 2:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" *"<<setw(3)<<num2[i]<<\'=\'<<setw(8)<<" ";
                    
                    break;
                case 3:
                    
                    cout<<setw(3)<<i<<". "<<setw(3)<<num1[i]<<" /"<<setw(3)<<num2[i]<<\'=\'<<setw(8)<<" ";
                    
                    break;
            
            if (i%5==0) cout<<endl;
     
    

        



void check_answer(int answer,int real[],int right)                        //答案检查函数 
    for(int i = 1;i<=300;i++)                                             //为方便演示可把此处的i改为小数字 
        cout<<"请输入第"<<i<<"题的答案"<<endl;
        cin>>answer; 
        if(answer==real[i])
            right++;
            cout<<"正确!"<<endl; 
        
        else 
        cout<<"错误!"<<endl; 
    
    right=right/3;
    cout<<"答题结束,你的分数是:"<<right<<endl; 



int main ()
    int answer;
    int right=0;
    int i=0;
    srand(time(NULL));
    while(i==0)
    get_question( num1,num2, op, real);
    display_question( num1,num2, op, real);
    check_answer(answer, real,right);
    cout<<"是否再来一组?(输入0)"<<endl;
    cout<<"按任意键退出。。。"<<endl;
    cin>>i;

    
    
    return 0;

运行结果:

心得体会:

       由于题目要求的是100以内的四则运算,所以要确保结果在0-100以内。此外,我们还通过限制随机数生成条件来避免除数为零、减数大于被减数等情况。在运行的过程中我们发现,如果在300道题答完之前退出,之后再运行生成的300道题跟之前一样。于是,我们加入了srand函数来对随机数进行初始化。通过这次的作业,我们意识到团队协作对于软件开发的重要性。具有团队意识,对于我们未来进入工作岗位也是十分重要的。

 

结对编程

    结对编程

一.项目前述

     1.项目内容

          1.1小学老师每周用该软件随机给同学出300道四则运算题

          1.2编程语言  java (因为要设计图形界面生成txt文件方便同学做题和老师批改)

          1.3编写出实现300道题的结果

          1.4定制出题数量

          1.5编程过程中遇到的问题

          1.6结对编程的收获

          1.7项目成员 (1759217   , 1759218

二.项目概览

1.1小学老师每周用该软件随机给同学出300道四则运算题的实现代码:(估计时间:15分钟)

import java.util.Random;

 

public class Math_Problem {

        public static void main (String args[])

        {

        String[] str=new String[]{"+","-","*","/"};

        int[] number=new int[100];

        for(int i=1;i<=100;i++)

        {

                 number[i-1]=i;

        }

        Random a=new Random();

 

        for(int i=0;i<300;i++)

        {

        System.out.println(number[a.nextInt(100)]+str[a.nextInt(4)]+number[a.nextInt(100)]+"=");

        }

        }

}

 

实现结果:

技术图片

     

1.2用java实现窗口的实现代码(估计时间:30分钟)

package ji;

 

public class Application {

     public static void main(String args[]) {

             WindowMenu win=new WindowMenu("四则运算",30,30,360,360);

     }

}

 

 

package ji;

import javax.swing.*;

import java.awt.event.InputEvent;

import java.awt.event.KeyEvent;

import static javax.swing.JFrame.*;

 

public class WindowMenu extends JFrame {

  JMenuBar menubar;

  JMenu menu,subMenu1,subMenu2,subMenu3,subMenu4;

  JTextArea textShow1,textShow2,textShow3,textShow4;

  public WindowMenu() {

  }

  public WindowMenu(String s,int x,int y,int w,int h) {

          init(s);

          setLocation(x,y);

          setSize(w,h);

          setVisible(true);

          setDefaultCloseOperation(DISPOSE_ON_CLOSE);

  }

  void init(String s) {

          setTitle(s);

          menubar=new JMenuBar();

          menu=new JMenu("计算");

          subMenu1=new JMenu("加法");

          subMenu2=new JMenu("减法");

          subMenu3=new JMenu("乘法");

          subMenu4=new JMenu("除法");

          menu.add(subMenu1);

          menu.add(subMenu2);

          menu.add(subMenu3);

          menu.add(subMenu4);

          subMenu1.add(new JTextArea(9,30));

          subMenu2.add(new JTextArea(9,30));

          subMenu3.add(new JTextArea(9,30));

          subMenu4.add(new JTextArea(9,30));

          menubar.add(menu);

          setJMenuBar(menubar);

  }

}

实现结果:

技术图片

 

 

(扩展性:学生可以把随机给出的题在图形窗口写出结果,保存为txt文件,发给老师批改)

 

1.3编写出实现300道题的结果的实现代码(估计时间:30分钟)

import java.util.Random;     //利用Random类可以实现随机出题

 

public class Math_Problem {

        public static void main (String args[])

        {

        String[] str=new String[]{"+","-","*","/"};

        double[] number=new double[100];

        for(int i=1;i<=100;i++)

        {

                 number[i-1]=i;

        }

        Random a=new Random();

        for(int i=0;i<300;i++)

        {

                 double answer;

                 //answer=number[a.nextInt(100)]str[a.nextInt(4)]number[a.nextInt(100)];

                 double x=number[a.nextInt(100)];

                 double y=number[a.nextInt(100)];

                 String m=str[a.nextInt(4)];

                 if(m=="+")

                 {

                         answer=x+y;

                         if(answer<=100)

                         {

                         System.out.println(x+m+y+"="+answer);

                         }

                         else

                                  continue;

                         //System.out.println(answer);

                 }

                 else if(m=="-")

                 {

                         answer=x-y;

                         System.out.println(x+m+y+"="+answer);

                         //System.out.println(answer);

                 }

                 else if(m=="*")

                 {

                         answer=x*y;

                         if(answer<=100)

                         {

                         System.out.println(x+m+y+"="+answer);

                         }

                         else

                                  continue;

                         //System.out.println(answer);

                 }

                 else if(m=="/")

                 {

                         answer=x/y;

                         if(answer<=100)

                         {

                         System.out.println(x+m+y+"="+answer);

                         }

                         else

                                  continue;

                         //System.out.println(answer);

                 }

        //System.out.println(number[a.nextInt(100)]+str[a.nextInt(4)]+number[a.nextInt(100)]+"=");

        }

        }

}

实现结果:

技术图片

 

 

1.4定制出题数量的实现代码(估计时间:15分钟)

package ji;

import java.util.Random;

 

public class Math_Problem {

    public static void main (String args[])

    {

    String[] str=new String[]{"+","-","*","/"};

    double[] number=new double[100];

    int num=5;  //   出题数量

    for(int i=1;i<=100;i++)

    {

        number[i-1]=i;

    }

    Random a=new Random();

    for(int i=0;i<num;i++)//  定制出题数量

    {

        double answer;

    //answer=number[a.nextInt(100)]str[a.nextInt(4)]number[a.nextInt(100)];

        double x=number[a.nextInt(100)];

        double y=number[a.nextInt(100)];

        String m=str[a.nextInt(4)];

        if(m=="+")

        {

           answer=x+y;

           if(answer<=100)

           {

           System.out.println(x+m+y+"="+answer);

           }

           else

               continue;

           //System.out.println(answer);

        }

        else if(m=="-")

        {

           answer=x-y;

           System.out.println(x+m+y+"="+answer);

           //System.out.println(answer);

        }

        else if(m=="*")

        {

           answer=x*y;

           if(answer<=100)

           {

           System.out.println(x+m+y+"="+answer);

           }

           else

               continue;

           //System.out.println(answer);

        }

        else if(m=="/")

        {

           answer=x/y;

           if(answer<=100)

           {

           System.out.println(x+m+y+"="+answer);

           }

           else

               continue;

           //System.out.println(answer);

        }

    //System.out.println(number[a.nextInt(100)]+str[a.nextInt(4)]+number[a.nextInt(100)]+"=");

    }

    }

}

实现结果

技术图片

 

1.5编程过程中遇到的问题

(1)设计阶段:我们就一个大概的想法,然后就分工去做,最后发现截然不同,两个人的代码合不上

(2)编程阶段:单独编程总是会在最后发现不了哪里出错(虽然用JAVA编程,错误会显示,但也要重新找)

1.6结对编程的收获

  通过这次结对编程,我们发现这比单独编程的效率高并提高了我们的结对编程的能力,同时也让我们收获了很多经验和教训(发现对方的编程风格和错误,用来规范自己同时能让对方指出自己的错误并改正,另外也让我们认识到沟通的重要性)。结对编程让我们两个人所写的代码不断地处于“复审”的过程,我们能够不断的审核,提高设计和编码的质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。

以上是关于结对编程——300道小学四则运算的主要内容,如果未能解决你的问题,请参考以下文章

201571030139/201571030134 小学生四则运算软件结对编程

201571030106/201571030116《小学四则运算练习软件》结对项目报告

小学生300道练习题程序及问题

小学300道四则运算

201571030319 201571030322 小学四则运算结对项目

生成300道小学四则运算题