首页 > 编程语言 >结对编程--四则运算

结对编程--四则运算

时间:2024-04-14 23:22:41浏览次数:24  
标签:结对 编程 return op2 -- 四则运算 char int

前言
按照结对编程的原则,我和小组另一个成员进行了结对编程。我们开发的结对项目是小学的四则运算生成器。具体来说,我们开发了一个程序,用于随机生成四则运算题目,供学生答题,并返回答案的正误。在讨论后,我们决定使用 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

标签:结对,编程,return,op2,--,四则运算,char,int
From: https://www.cnblogs.com/yy1n/p/18134905

相关文章

  • 死锁指南
    死锁指南项目2023/10/263个参与者反馈 本文内容了解死锁检测和结束死锁死锁检测死锁信息工具显示另外5个适用于:SQLServerAzureSQL数据库AzureSQL托管实例AzureSynapseAnalyticsAnalyticsPlatformSystem(PDW)本文深入讨论SQLServer数据库引擎......
  • 深入理解并发和并行
    深入理解并发和并行1并发与并行为什么操作系统上可以同时运行多个程序而用户感觉不出来?因为操作系统营造出了可以同时运行多个程序的假象,通过调度进程以及快速切换CPU上下文,每个进程执行一会就停下来,切换到下个被调度到的进程上,这种切换速度非常快,人无法感知到,从而产生了多个任......
  • 修复或重新安装debian12linux的/boot分区,efi引导
    一.使用live系统二.挂载块设备三.chroot到/mnt,用arch-chroot比较方便四.开始重新安装/boot下的文件有config-6.1.0-18-amd64grub System.map-6.1.0-18-amd64efi initrd.img-6.1.0-18-amd64vmlinuz-6.1.0-18-amd64注意我的是amd架构,换成你的架构1.efi......
  • 原型设计实验
    原型设计工具比较分析:墨刀:适用领域:墨刀适用于快速原型设计和交互设计,特别适合移动应用和Web应用的设计。优点:界面简洁清晰,易于上手,适合初学者和团队合作。支持多种交互模式,如链接、滑动、弹出框等,可以较好地模拟用户操作流程。支持团队协作,可以多人同时编辑同一项目,方便团队......
  • 实验2_C语言分支与循环基础应用编程
    实验任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){ intnumber; inti; srand(time(0)); for(i=0;i<N;++i){ number=rand()%65+1; printf("20238331%04d\n",number); } return0;}......
  • 1014 福尔摩斯的约会
    我感觉是这题出的有问题,第二个只说了字母,并没有说第二个大写字母...为啥就得从第一个大写字母后面开始检索呢。#include<bits/stdc++.h>usingnamespacestd;map<int,string>mp={{1,"MON"},{2,"TUE"},{3,"WED"},{4,"THU"},{5,"FRI"},{6,"SAT"}......
  • python项目位置迁移后,虚拟环境无法使用
    一、虚拟环境无法使用问题修改虚拟环境目录/pyvenv.cfg文件中的路径修改虚拟环境目录/scripts/activate.bat文件中**VIRTUAL_ENV参数**的值,改为当前虚拟环境的路径。另外,项目路径最好不要带中文,否则会导致虚拟环境无法使用(变成使用环境变量终端python)。来源:https://blog......
  • LlamaIndex 是什么
     LlamaIndex是一个基于LLM(大语言模型)的应用程序数据框架,适用于受益于上下文增强的场景。这类LLM系统被称为RAG(检索增强生成)系统。LlamaIndex提供了必要的抽象层,以便更容易地摄取、结构化和访问私有或特定领域的数据,从而安全可靠地将这些数据注入LLM中,以实现更准确的文......
  • LlamaIndex 高层次概念
     本篇内容为您快速介绍在构建基于大型语言模型(LLM)的应用程序时会频繁遇到的一些核心概念。 增强检索生成(RAG)LLM是基于海量数据训练而成,但并未涵盖您的具体数据。增强检索生成(Retrieval-AugmentedGeneration,RAG)通过将您的数据添加至LLM已有的数据集中,解决了这一问题。......
  • 前言 —— CHATGPT原理与应用开发
    前言写作背景  从去年年底ChatGPT的发布以来,作为自然语言处理(naturallanguageprocessing,NLP)一线从业人员,我本人已经感受到了巨大压力,甚至觉得NLP工程师这个职位以后一定会消亡。当时在见识了ChatGPT的各种强大能力后,不少NLP一线从业人员很自然地就会想到,以后开发人员只要借......