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