読者です 読者をやめる 読者になる 読者になる

FLYING

〈全日本・紀文豆乳飲料シリーズ「麦芽コーヒー」の500ミリリットルパックを扱う小売店が少ないことに遺憾の意を表明する会〉活動記録

JOI予選で使ったやつ

実行して問題番号を入力すると、ソースをコンパイルして出力ファイルを生成するプログラム。ただし、問題のソースを 1.cpp, 2.cpp, ... というファイル名にしておく必要がある。別にシェルスクリプトでもいいじゃんという脳内意見もあったが、シェルスクリプトの文法を知らなかったのでこんな感じに。

#include <iostream>
#include <cstring>
#define NINPUT 5	// 入力ファイル数
#define TYPE "cpp"	// ソースの拡張子
using namespace std;

int main()
{
	char cpp[128], exec[128];
	int num;
	
	cout << "問題番号を入力: ";
	cin >> num;
	
	cout << "コンパイルちう..." << endl;
	sprintf(cpp, "g++ %d.%s -o %d", num, TYPE, num);
	system(cpp);
	
	cout << "実行ちう..." << endl;
	for(int i = 1; i <= NINPUT; i++){
		cout << "入力" << i << "を実行中..." << endl;
		sprintf(exec, "./%d < 2008-yo-t%d-in%d.txt > out%d-%d.txt",
			num, num, i, num, i);
		system(exec);
	}
	
	cout << "done." << endl;
	return 0;
}

単に入出力を手動でリダイレクトするのが面倒だっただけ。たぶん他の参加者もこういうの作ってたと思うんだけど、どうなんでしょう。