吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3315|回复: 11
收起左侧

[C&C++ 原创] 用C++编写一款OJ系统

[复制链接]
hanbangze 发表于 2022-8-26 21:52
相信OJ对熟悉计算机的朋友来讲都是一个很熟悉的名字,可你有没有想过,自己能不能作一款OJ系统呢?其实很简单。
大多数评判机都是linux的,所以我们也在linux上编写这玩意。
整个代码,只需要掌握一个技能:数据重定向。如果你想知道这是什么玩意,那就自己去百度吧。
整个程序的运行效果是这样的:
Screenshot from 2022-08-25 21-47-37.png
Screenshot from 2022-08-25 21-48-49.png
Screenshot from 2022-08-25 21-51-50.png
代码如下:
[C++] 纯文本查看 复制代码
//The program requires three parameters.Usage:
//./OJ user_program input_file answer
//Example:
//./OJ a.cpp a.in a.out
//Notice:
//You may need to use data redirection to save the result.
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;
int main(int argc,char *argv[])
{
	string program_path=argv[1];
	
	string compile_cmd="g++ -o check_program "+program_path;
	system(&compile_cmd[0]);
	ifstream check_ce("check_program");
	if(!check_ce)
	{
		cout<<"Compile Error"<<endl;
		return 0;
	}
	ofstream output("user.ans");
	output.close();
	string check_cmd="./check_program >user.ans <";
	check_cmd+=argv[2];
	system(&check_cmd[0]);
	ofstream user_md5("usermd5");
	user_md5.close();
	system("md5sum user.ans >usermd5");
	ofstream answer_md5("answermd5");
	answer_md5.close();
	string verification="md5sum ";
	verification+=argv[3];
	verification+=" >answermd5";
	system(&verification[0]);
	ifstream user_get("usermd5");
	string usermd5;
	user_get>>usermd5;
	ifstream ans_get("answermd5");
	string ansmd5;
	ans_get>>ansmd5;
	if(usermd5==ansmd5)
	{
		cout<<"Accepted"<<endl;
	}
	else
	{
		cout<<"Wrong Answer"<<endl;
	}
	system("rm check_program");
	system("rm answermd5");
	system("rm user.ans");
	system("rm usermd5");
	return 0;
}

制作不易,给个评分吧~~~

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wuditieniu 发表于 2023-7-8 08:17
这个肯定不能算作是online judge的,只能算作是代码验证正误的一个脚本,而且还只能离线运行,和真正的oj差了十万八千里了
 楼主| hanbangze 发表于 2022-8-30 21:18
coolcalf 发表于 2022-8-28 13:11
QJ 是什么意思,抢劫?

OJ可以判断你的程序是否存在逻辑错误或语法错误
dork 发表于 2022-8-27 11:09
qingfeng0923 发表于 2022-8-27 12:29
啊这,好家伙
seawaycao 发表于 2022-8-27 12:53
谢谢分享!
zgszwp 发表于 2022-8-27 13:11
加油阿,给力
coolcalf 发表于 2022-8-27 13:49
Qiang Jie ?
 楼主| hanbangze 发表于 2022-8-27 17:06

您这句话是什么意思?我不太理解。
coolcalf 发表于 2022-8-28 13:11
hanbangze 发表于 2022-8-27 17:06
您这句话是什么意思?我不太理解。

QJ 是什么意思,抢劫?
shenwang250 发表于 2022-8-29 11:02
大神都是真没朴实无华吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表