windows/mac/linux 用C++搭建一个刷题模拟器

一个刷题模拟器,一定要有题,题目从这里下载

欢迎大家提供新题目(请把题目文件夹压缩成zip后发给我chengyixuan130812@163.com),我会定期更新的。

题目格式:

题目编号

        nums.txt(评测点个数)

        题目描述.txt(题目描述)

        1_in.txt(第1个测试点的输入)

        1_out.txt(第1个测试点的输出)

        ……

        n_in.txt(例如n=10,文件名为10_in.txt)

        n_out.txt(例如n=10,文件名为10_out.txt)

下面是正文:

我把这个项目分成了几块,分别是:显示题目描述、编译程序、评测

最后我还做了一个“开始做题”的程序

先在你的工程里建一个文件夹,把题目和程序放在这个目录下。注意,最后编译的时候请在目录下编译

先把要做的题号放在了“题号.txt”文件里

这样显示题目描述就简单了,只要把题号读出来,再找到文件夹里的“题目描述.txt”并输出就好了

题目描述.cpp 

windows:

#include <iostream>
#include <fstream>
using namespace std;int main()
{ifstream fin("\\题号.txt");string num;fin >> num;fin.close();fin.open("\\" + num + "\\题目描述.txt");string s;while(getline(fin,s)){cout << s << endl;}return 0;
}

mac/linux:

#include <iostream>
#include <fstream>
using namespace std;int main()
{ifstream fin("./题号.txt");string num;fin >> num;fin.close();fin.open("./" + num + "/题目描述.txt");string s;while(getline(fin,s)){cout << s << endl;}return 0;
}

我把题目程序放在了test.cpp文件里

如果想要在终端编译程序,可以输入g++ -o main main.cpp(这里要编译的文件是main.cpp,而编译出来的文件是main/main.exe)

在程序里只要使用system("g++ -o main main.cpp");就能编译成功了

make.cpp

#include <iostream>
#include <cstdlib>
using namespace std;int main()
{system("g++ -o test test.cpp");return 0;
}

 

最后评测环节,把评测点读入到程序里,把它存在一个文件里,与评测点的输出做比较,如果相同那么就对了,我结果记录在一个“检测结果.txt”文件里

windows:

#include <bits/stdc++.h>
using namespace std;int main()
{ifstream fin("题号.txt");string ti;fin >> ti;fin.close();fin.open(ti + "\\nums.txt");int nums;fin >> nums;fin.close();int cnt = 0;system("./make.exe");ofstream fout("检测情况.txt",ios::trunc);for(int i = 1;i <= nums;i++){string dic = "test_" + to_string(i) + ".out";freopen(dic.c_str(),"w",stdout);string s = ti + "\\" + to_string(i) + "_in.txt";freopen(s.c_str(),"r",stdin);system("./test");fclose(stdin);ifstream fin1(dic);ifstream fin2(ti + "\\" + to_string(i) + "_out.txt");string s1,s2;bool flag = true;while(getline(fin1,s1) && getline(fin2,s2)){if(s1 != s2){flag = false;}}fout << to_string(i) << ":";if(flag){fout << "AC" << endl;cnt++;}elsefout << "WA" << endl;fclose(stdout);}printf("你得到了%d分",(int)floor(1.0 * cnt / nums));return 0;
}

mac/linux:

#include <bits/stdc++.h>
using namespace std;int main()
{ifstream fin("./题号.txt");string ti;fin >> ti;fin.close();fin.open(ti + "/nums.txt");int nums;fin >> nums;fin.close();int cnt = 0;system("./make");ofstream fout("./检测情况.txt",ios::trunc);for(int i = 1;i <= nums;i++){string dic = "./test_" + to_string(i) + ".out";freopen(dic.c_str(),"w",stdout);string s = "./" + ti + "/" + to_string(i) + "_in.txt";freopen(s.c_str(),"r",stdin);system("./test");fclose(stdin);ifstream fin1(dic);ifstream fin2("./" + ti + "/" + to_string(i) + "_out.txt");string s1,s2;bool flag = true;while(getline(fin1,s1) && getline(fin2,s2)){if(s1 != s2){flag = false;}}fout << to_string(i) << ":";if(flag){fout << "AC" << endl;cnt++;}elsefout << "WA" << endl;fclose(stdout);}printf("你得到了%d分",(int)floor(1.0 * cnt / nums));return 0;
}

最后把所有文件编译即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划(记忆化搜索)

AcWing 901. 滑雪 给定一个 R行 C 列的矩阵&#xff0c;表示一个矩形网格滑雪场。 矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。 一个人从滑雪场中的某个区域内出发&#xff0c;每次可以向上下左右任意一个方向滑动一个单位距离。 当然&#xff0c;一个人能…

【前端设计模式】之桥接模式

桥接模式是一种常用的设计模式&#xff0c;它可以将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。在前端开发中&#xff0c;桥接模式可以帮助我们更好地组织和管理代码&#xff0c;提高代码的可维护性和可扩展性。 桥接模式特性 分离抽象和实现&#xff1a;桥接…

liunx Centos-7.5上 rabbitmq安装

在安装rabbitmq中需要注意&#xff1a; 1、rabbitmq依赖于erlang&#xff0c;需要先安装erlang 2、erlang和rabbitmq版本有对应关系 可参考网页&#xff1a;https://www.rabbitmq.com/which-erlang.html 第一步&#xff0c;安装编译工具及库文件,如果服务器上已经有了&…

长连接的原理

Apollo的长连接实现是 Spring的DeferredResult来实现的,先看怎么用 import ...RestController RequestMapping("deferredResult") public class DeferredResultController {private Map<String, Consumer<DeferredResultResponse>> taskMap new HashMa…

SpringBoot_minio sdk使用自签名https证书错误处理

minio sdk使用自签名https证书错误处理 1.问题描述1.1 报错日志1.2 maven 依赖配置1.3 当前spring MinioClient配置 2.问题分析3.问题解决3.1 使用受信任的证书3.2 忽略证书验证3.2.1 minio客户端3.2.2 minio sdk 忽略证书验证3.2.2.1 拓展: 补充minioclient请求日志 4. 问题总…

树形数据增删改查

功能描述&#xff1a; 默认展示所有项目点击项目展示当前项目下的所有区域点击区域展示当前区域下的所有工位以上以树形图格式展示项目&#xff0c;区域&#xff0c;和工位都可进行增加 修改 和删除&#xff0c;每个图标hover时显示对应提示信息项目&#xff0c;区域&#xff…

illuminate/database 使用 二

上一篇文章写怎么单独使用illuminate/database&#xff0c;这回讲下怎么整合到项目里使用。为此特意看了下laravel对其使用。本篇文章&#xff0c;参照laravel的使用&#xff0c;简单实现。 一 原理 laravel 里使用illuminate/config。 illuminate/config composer 地址&…

Spring Boot整合OAuth2实现GitHub第三方登录

Spring Boot整合OAuth2&#xff0c;实现GitHub第三方登录 1、第三方登录原理 第三方登录的原理是借助OAuth授权来实现&#xff0c;首先用户先向客户端提供第三方网站的数据证明自己的身份获取授权码&#xff0c;然后客户端拿着授权码与授权服务器建立连接获得一个Access Token…

vuejs实现点击导出按钮把数据加密后传到json/txt格式文件中并下载,以及上传json文件解密获得json内容

vuejs实现点击导出按钮把数据加密后传到json/txt格式文件中并下载&#xff0c;以及上传json文件解密获得json内容 &#xff08;1&#xff09;在Vue.js中使用crypto-js进行加密和解密&#xff0c;首先安装crypto-js库 npm install crypto-js&#xff08;2&#xff09;在需要使…

研发效能认证学员作品:快速进行持续集成应用实践丨IDCF

作者&#xff1a;赖嘉明 研发效能&#xff08;DevOps&#xff09;工程师认证学员 随着数字化转型的推进及市场竞争的加剧&#xff0c;越来越多的企业也意识到持续集成的重要性。 而持续集成作为一种先进的软件开发实践和工具链&#xff0c;可以帮助企业实现自动化构建、集成和…

systemctl 自启软件闪屏桌面

一、问题分析 systemctl 服务启动在桌面系统之前&#xff0c;启动界面加载到 100% 时桌面系统开始加载&#xff0c;会强制隐藏我们的界面并显示桌面&#xff0c;待桌面彻底加载完毕&#xff0c;才能显示我们的软件界面。这期间就是闪屏并显示桌面的原因。 不过正常情况桌面系…

STM32CubeMX和STM32F4

目录 嵌入式开发的硬件相关STM32CubeMXSTM32F4Cortex-M4-FSFPU 嵌入式开发的软件相关μC/OS-II 嵌入式开发的硬件相关 STM32CubeMX STM32CubeMX是一个基于图形界面的工具&#xff08;是软件&#xff09;,用于配置和生成STM32微控制器的初始化代码和库文件。它适用于基于ARM C…

文件上传漏洞(1), 文件上传绕过原理

文件上传漏洞 一, 前端校验上传文件 添加 Javascript 代码&#xff0c;然后在 form 表单中 添加 onsubmit"returb checkFile()" <script>function checkFile() {// var file document.getElementsByName(photo)[0].value;var file document.getElementByI…

基于YOLOv8模型的烟雾目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的烟雾目标检测系统可用于日常生活中检测与定位烟雾目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数据集…

elasticsearch-7.9.3 单节点启动配置

一、elasticsearch-7.9.3 单节点启动配置 node.name: node-1 network.host: 192.168.227.128 http.port: 9200 discovery.seed_hosts: ["192.168.227.128"] node.max_local_storage_nodes: 1 discovery.type: single-node二、kibana-7.9.3-linux-x86_64 单节点启动配…

Ubuntu22.04安装,SSH无法连接

Ubuntu初始化安装后&#xff0c;系统默认不允许root通过ssh连接&#xff0c;因此需要完成三个设置 1.修改ssh配置文件 vim /etc/ssh/sshd_config 将PermitRootLogin注释打开&#xff0c;并将值改为yes 保存修改并退出 :wq 2.重启ssh服务 sudo service ssh restart 3.重新打…

spark3.3.x处理excel数据

环境: spark3.3.x scala2.12.x 引用: spark-shell --jars spark-excel_2.12-3.3.1_0.18.5.jar 或项目里配置pom.xml <!-- https://mvnrepository.com/artifact/com.crealytics/spark-excel --> <dependency><groupId>com.crealytics</groupId><art…

八大排序算法(C语言版)之插入排序

八大排序详解 目录&#xff1a;一、排序的概念1.1 排序的概念1.2 排序的应用 二、直接插入排序三、希尔排序四、排序算法复杂度及稳定性分析 目录&#xff1a; 八大排序算法&#xff1a; #mermaid-svg-7qCaGEYz0Jyj9dYw {font-family:"trebuchet ms",verdana,arial,…

[极客大挑战 2019]Havefun

1.打开链接 2.检查一下源代码 发现一段代码。 3.分析代码 <!-- $cat$_GET[cat]; echo $cat; if($catdog){ echo Syc{cat_cat_cat_cat}; } --> 询问ChatGPT&#xff1a; 从您提供的代码片段来看&#xff0c;这是…

C++中低级内存操作

C中低级内存操作 C相较于C有一个巨大的优势&#xff0c;那就是你不需要过多地担心内存管理。如果你使用面向对象的编程方式&#xff0c;你只需要确保每个独立的类都能妥善地管理自己的内存。通过构造和析构&#xff0c;编译器会帮助你管理内存&#xff0c;告诉你什么时候需要进…