在本次结对编程中,我和2152618徐成阳一起完成了四则运算题目生成程序的编写,在这次结对编程中收获良多。在一起完成一个项目时,首先应该进行明确的分工,根据自己的特长进行分工可以大大提高效率,结对编程可以培养我们团队合作的意识,让我们更好地完成工作。以下是程序的源代码:
#include <iostream> #include <cstdlib> #include <ctime> using namespace std; enum enOp { Add, Minus, Multiply, Divide }; //将 枚举类型转换为字符类型,以便输出。 char enum2char(enOp op) { switch (op) { case Add: return '+'; case Minus: return '-'; case Multiply: return '*'; case Divide: return '/'; } return ' '; } //检查生成计算式的正确与否。其中 减法结果不能为负数,除法结果不能为小数。 bool checkFormula(int left, int right, int middle, enOp op1, enOp op2) { if (op1 == Add) { if (op2 == Add) return true; if (op2 == Minus) { if (left + middle < right) return false; else return true; } if (op2 == Multiply) return true; else { if (right == 0) return false; return true; } } if (op1 == Minus) { if (op2 == Add) { if (left < middle) return false; else return true; } if (op2 == Minus) { if (left < middle) return false; if (left - middle < right) return false; else return true; } if (op2 == Multiply) { if (left < middle * right) return false; else return true; } else { if (right == 0) return false; if (left < middle / right) return false; else return true; } } if (op1 == Multiply) { if (op2 == Add) return true; if (op2 == Minus) { if (right * middle < right) return false; else return true; } if (op2 == Multiply) return true; else { if (right == 0) return false; return true; } } if (op1 == Divide) { if (op2 == Add) { if (middle == 0) return false; else return true; } if (op2 == Minus) { if (middle == 0) return false; if (left / middle < right) return false; else return true; } if (op2 == Multiply) { if (middle == 0) return false; else return true; } else { if (middle == 0) return false; if (right == 0) return false; return true; } } } //依据给定操作符,生成符合条件的表达式。 void getFormula(int *left, int *right, int *middle, enOp op1, enOp op2) { for (;;) { *left = 1 + rand() % 100; *middle=1 + rand() % 100; *right = 1 + rand() % 100; if (checkFormula(*left, *right, *middle, op1, op2)) break; } } int main() { int Num; cout << "请输入生成题目数量:"; cin >> Num; //左侧数 int left[Num]; //右侧数 int right[Num]; //中间数 int middle[Num]; //操作符 +-*/ enOp op1[Num]; enOp op2[Num]; cout << "正在生成,请稍等。" << endl; //随机种子 srand(time(nullptr)); //开始生成计算表达式。 for (int i = 0; i < Num; i++) { //操作符 op1[i] = enOp(rand() % 4); op2[i] = enOp(rand() % 4); getFormula(&left[i], &middle[i], &right[i], op1[i], op2[i]); } cout << "生成计算式完成,开始答题!" << endl; //输出表达式,让用户答题 for (int i = 0; i < Num; i++) { //输出表达式 cout << left[i] << ' ' << enum2char(op1[i]) << ' ' << middle[i] << enum2char(op2[i]) << right[i] << " = " << endl; } }
标签:结对,编程,return,op2,四则运算,middle,right,false,true From: https://www.cnblogs.com/123wjt/p/17299448.html