首页 > 编程语言 >结对编程——随机生成四则运算程序

结对编程——随机生成四则运算程序

时间:2023-04-18 20:57:13浏览次数:33  
标签:std 结对 编程 num1 num2 int 四则运算 problems cout

在本次结对编程中,我和2152634王锴中同学一同进行参与了随机生成四则运算题目程序的编写,本次编写环境在clion上,使用c++风格的代码完成编写。在编写的过程中,我们一同探讨了用哪种语言进行编译,最终选定c++,原因在于对c++的掌握程度更深。在一起完成此项目的同时,我们收获了很多,尤其对方的一些编译技巧,我们在互相学习与补充,增进对c++的理解。以下是程序的源代码:

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <tuple>
// Function to check whether given answer is correct
bool check_answer(int num1, int num2, char op, int ans) {
int correct_ans = (op == '+') ? (num1 + num2) : (num1 - num2);
return ans == correct_ans;
}

// Function to generate unique arithmetic problems
std::vector<std::tuple<int, int, char>> generate_arithmetic_problems(int total_problems) {
srand((unsigned)time(NULL));
int min = 0, max = 100;
int count = 1;

std::vector<std::tuple<int, int, char>> problems;

while (count <= total_problems) {
int num1 = rand() % (max - min + 1) + min;
int num2 = rand() % (max - min + 1) + min;
char operation = (rand() % 2 == 0) ? '+' : '-';

problems.push_back(std::make_tuple(num1, num2, operation));
count++;
}

return problems;
}

int main() {
int total_problems = 300;
auto problems = generate_arithmetic_problems(total_problems);

std::cout << "=== Arithmetic Practice Problems ===" << std::endl;
for (int i = 0; i < total_problems; i++) {
std::cout << "Problem " << i + 1 << ": "
<< std::get<0>(problems[i]) << " "
<< std::get<2>(problems[i]) << " "
<< std::get<1>(problems[i]) << " = ?" << std::endl;
}

std::cout << "===Enter your answers===" << std::endl;
std::vector<int> user_answers;
for (int i = 0; i < total_problems; i++) {
int answer;
std::cin >> answer;
user_answers.push_back(answer);
}

std::cout << "===Results===" << std::endl;

for (int i = 0; i < total_problems; i++) {
int num1 = std::get<0>(problems[i]);
int num2 = std::get<1>(problems[i]);
char operation = std::get<2>(problems[i]);
int user_ans = user_answers[i];

if (check_answer(num1, num2, operation, user_ans)) {
std::cout << "Problem " << i + 1 << ": Correct!" << std::endl;
} else {
std::cout << "Problem " << i + 1 << ": Incorrect." << std::endl;
}
}

return 0;
}

 

标签:std,结对,编程,num1,num2,int,四则运算,problems,cout
From: https://www.cnblogs.com/tiejiangjjj/p/17331042.html

相关文章

  • 【Java技术指南】「Unirest编程专题」一起认识一下一个“灰常”优秀的Http工具,让Http
    Unirest-Java是一个轻量级的HTTP客户端库,它提供了简单易用的API,可以帮助Java开发人员快速地发送HTTP请求和处理响应。在本文中,我们将深入探讨Unirest-Java的技术细节和使用方法。Unirest-Java的优点简单易用:Unirest-Java提供了一组简单易用的API,可以帮助Java开发人员快速地发送HTTP......
  • 每日编程一小时(第九天)
    一.问题描述彩票的号码有6位数字,若一张彩票的前3位上的数之和等于后3位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。二.设计思路1.输入一个数字a2.创建一个2维字符数组b[101][7]3.循环输入n个字符串4.循环设定两个变量m,n全部置为05.创建......
  • 面向接口编程实践之aspnetcoreapi的抽象
    最为一名越过菜鸟之后的开发,需要做接口开发。下面做一个纯粹的接口编程的实例demo,仅仅是一个webapi接口的抽象。下面是代码接口,AbsEFWork是webapi,BaseEntityFramework是一个接口库。先介绍一下webapi的实现,代码是从底层往上层写的,阅读代码的习惯应该是自上向下。publiccla......
  • c语言趣味编程(2)借书方案知多少
    一、问题描述小明有5本新书,要借给A,B,C这三位小朋友,若每次每人只能借一本,则可以有多少种不同的借法?二、设计思路(1)定义三个变量a,b,c来代表三位小朋友借的书的编号(2)利用for循环嵌套循环让a,b,c递增遍历得到满足条件的情况(3)并定义另一个变量i来代表借阅情况的总和,以便后面的输出三......
  • WebSocket和Socket编程
    面试一般会问socket原理socket为啥要有端口:确定一个链路的是一个四元组Socket编程socket通信你做过socket编程吗,socket是怎么实现知道有连接过来的说说WebSocket与socket的区别先谈谈Websocket与Socket的区别首先Socket==不属于协议范畴,它把TCP/IP层复杂的操作抽象为几个简......
  • EJB教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介EJB入门教程-从简单的步骤了解EJB3.0和3.1(EnterpriseJavaBean)框架,从基本概念到高级概念,包括概述,环境设置,应用服务器,容器,企业Bean,注释,会话,无状态会话,有状态会话,消息驱动,实体Bean,持久性,远程接口,查找,生命周期,接口,拦截器,可嵌入对象,Blob/Clobs,事务,安全性,JNDI绑定,实体关......
  • PHP 7 教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介PHP7入门教程-从简单的步骤了解PHP7,从基本到高级概念,包括简介,性能,环境设置,标量类型声明,返回类型声明,空值合并运算符,Spaceship运算符,常量数组,匿名类,Closure::call(),Filteredunserialize(),IntlChar,CSPRNG,Expectations,useStatement,ErrorHandling,IntegerDivision,Sess......
  • Java并发编程:Lock
      在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来讨论这个问题,从Java5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提......
  • Java并发编程:深入剖析ThreadLocal
    Java并发编程:深入剖析ThreadLocal想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。以下是本文目录......
  • shell编程-位置参数的理解
    Linux——$1、$#、$@、$0、$1、$2探岳精神于 2018-07-1921:59:45 发布29675 收藏 66分类专栏: 测试开发 测试开发专栏收录该内容70篇文章5订阅订阅专栏$1在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)。test-z$1是一个判断表达......