修改LDUOJ的SPJ问题

本文档详细记录了C++代码的重构过程,主要涉及常量定义的调整,输入输出流的修改,以及错误处理函数的删除和注释。将错误代码从ASCII字符关联值改为整数,简化了`init_io`函数,去除了不必要的参数检查和反馈输出。重构旨在提高代码可读性和效率。
摘要由CSDN通过智能技术生成

首先我们遇见注释,也就是文章说明, 怪长的删了吧哈哈哈

然后看到

const int EXITCODE_AC = 42;
const int EXITCODE_WA = 43;

改成这丫子,好像是因为, 42代表字符’0’,阿斯卡码什么的。

const int EXITCODE_AC = 0;
const int EXITCODE_WA = 1;

跟上面一样,将ac改成0,wa改成1

看到这个东东:

std::ifstream judge_in, judge_ans;
std::istream author_out(std::cin.rdbuf());

改成这样丫子:

std::ifstream judge_in, judge_ans;
std::ifstream author_out;

然后接着看:

将这两个函数中的

void wrong_answer(const std::string &msg, ...) {
	va_list pvar;
	va_start(pvar, msg);
	vreport_feedback(FILENAME_JUDGE_MESSAGE, msg, pvar);
	exit(EXITCODE_WA);
}

void judge_error(const std::string &msg, ...) {
	va_list pvar;
	va_start(pvar, msg);
	vreport_feedback(FILENAME_JUDGE_ERROR, msg, pvar);
	assert(0);
}

注释掉。

va_list pvar;
	va_start(pvar, msg);
	vreport_feedback(FILENAME_JUDGE_ERROR, msg, pvar);

接着看:

void accept_with_score(double scorevalue) {
	report_feedback(FILENAME_SCORE, "%.9le", scorevalue);
	exit(EXITCODE_AC);
}

注释掉第一行:

void accept_with_score(double scorevalue) {
	///report_feedback(FILENAME_SCORE, "%.9le", scorevalue);
	exit(EXITCODE_AC);
}

然后看到init_io函数:
把前面这些:

if(argc < 4) {
		fprintf(stderr, USAGE, argv[0]);
		judge_error("Usage: %s judgein judgeans feedbackdir [opts] < userout", argv[0]);
	}

	// Set up feedbackdir first, as that allows us to produce feedback
	// files for errors in the other parameters.
	if (!is_directory(argv[3])) {
		judge_error("%s: %s is not a directory\n", argv[0], argv[3]);
	}
	feedbackdir = argv[3];

删掉之后,改成这丫子、

void init_io(int argc, char **argv) {
	
	judge_in.open(argv[1], std::ios_base::in);
	if (judge_in.fail()) {
		judge_error("%s: failed to open %s\n", argv[0], argv[1]);
	}

	judge_ans.open(argv[2], std::ios_base::in);
	if (judge_ans.fail()) {
		judge_error("%s: failed to open %s\n", argv[0], argv[2]);
	}

	author_out.open(argv[3], std::ios_base::in);
	if (author_out.fail()) {
		judge_error("%s: failed to open %s\n", argv[0], argv[3]);
	}
}

over

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值