结对编程--四则运算

前言
按照结对编程的原则,我和小组另一个成员进行了结对编程。我们开发的结对项目是小学的四则运算生成器。具体来说,我们开发了一个程序,用于随机生成四则运算题目,供学生答题,并返回答案的正误。在讨论后,我们决定使用 C++ 来开发这个控制台程序,因为 C++ 具有优秀的计算功能,并且能够在时间限制下高效完成任务。
功能要求
小学老师要每周给同学出300道四则运算练习题。
–这个程序有很多种实现方式:

C/C++
C#/VB.net/Java
Excel
Unix Shell
Emacs/Powershell/Vbscript
Perl
Python
–两个运算符,100 以内的数字,不需要写答案(实现)

–需要检查答案是否正确,并且保证答案在 0..100 之间(实现)

–尽可能地多设置一些条件
添加的条件:
给出的题目的结果为0--100之间的整数
在算式中出现除法运算时,除法运算能够整除
编程阶段
当我负责编程时,我的队友在一旁观看。我们首先讨论了整体的框架,确定了要实现的功能以及实现方法。然后,我们开始编程阶段。在这个阶段,我的队友与我断断续续地交流沟通。他们在我遇到问题或思路陷入僵局时提出了一些新的想法。最终,我们成功实现了四则运算题目生成器。整个过程充满了合作与沟通,使得我们能够充分利用彼此的想法和技能来完成任务。

点击查看代码
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

// 生成随机数
int generateRandomNumber() {
    return rand() % 101; // 生成 0 到 100 之间的随机数
}

// 生成随机运算符
char generateRandomOperator() {
    char operators[] = { '+', '-', '*', '/' };
    int index = rand() % 4; // 生成 0 到 3 之间的随机数
    return operators[index];
}

// 输出题目
void printQuestion(int num1, char op1, int num2, char op2, int num3, int index) {
    cout << index << ". " << num1 << " " << op1 << " " << num2 << " " << op2 << " " << num3 << " = ?" << endl;
}

// 计算表达式结果
int calculate(int num1, char op1, int num2, char op2, int num3) {
    int result1, result2;
    switch (op1) {
    case '+':
        result1 = num1 + num2;
        break;
    case '-':
        result1 = num1 - num2;
        break;
    case '*':
        result1 = num1 * num2;
        break;
    case '/':
        if (num2 != 0)
            result1 = num1 / num2;
        else
            return -1; // 除数为0,返回无效结果
        break;
    default:
        return -1; // 非法运算符,返回无效结果
    }
    switch (op2) {
    case '+':
        result2 = result1 + num3;
        break;
    case '-':
        result2 = result1 - num3;
        break;
    case '*':
        result2 = result1 * num3;
        break;
    case '/':
        if (num3 != 0 && result1 % num3 == 0) // 保证结果在0-100之间且除法能整除
            result2 = result1 / num3;
        else
            return -1; // 除数为0或结果不在0-100之间,返回无效结果
        break;
    default:
        return -1; // 非法运算符,返回无效结果
    }
    // 确保结果在 0 到 100 之间
    if (result2 < 0)
        return 0;
    else if (result2 > 100)
        return 100;
    else
        return result2;
}

// 判断答案是否正确
bool isAnswerCorrect(int num1, char op1, int num2, char op2, int num3, int answer) {
    int result = calculate(num1, op1, num2, op2, num3);
    if (result != -1 && result == answer) {
        return true;
    }
    else {
        return false;
    }
}

int main() {
    srand(time(0)); // 初始化随机数种子

    int index = 1;
    while (true) {
        int num1 = generateRandomNumber();
        int num2 = generateRandomNumber();
        int num3 = generateRandomNumber();
        char op1 = generateRandomOperator();
        char op2 = generateRandomOperator();

        // 输出题目
        printQuestion(num1, op1, num2, op2, num3, index);

        // 计算正确答案
        int correctAnswer = calculate(num1, op1, num2, op2, num3);

        // 接收答案
        int answer;
        cout << "请输入答案:";
        cin >> answer;

        // 判断答案是否正确
        if (answer == correctAnswer) {
            cout << "回答正确!" << endl;
        }
        else {
            cout << "回答错误!" << endl;
        }

        // 继续下一题
        index++;
    }

    return 0;
}


运行展示

总结
这次与同伴一起进行结对编程,我发现了自己在某些方面的不足,以及在一些情况下考虑不够全面。结对编程的过程中,我体会到了与同伴合作的高效性,因为他们能够及时发现问题并提出建议。同时,结对编程还让我有机会与同伴分享彼此的技术知识和经验,这种交流促进了我个人技术的成长,让我学到了许多新的编程技巧和方法。总的来说,结对编程对我个人和团队的发展都是非常有益的。
合作对象
2252631 2252620

posted @ 2024-04-14 23:17  yy1n  阅读(29)  评论(0编辑  收藏  举报