结对编程——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《小学四则运算练习软件》结对项目报告