Problemi Output Only

Mi stavo chiedendo in problemi “Output Only” come posso far in modo che il mio programma con una unica esecuzione legga tutti gli input e crei i relativi output con i nomi specifici (Ex. output_007). Anche come si può far eseguire soltanto alcuni sottoinsiemi (Ex. dall’input n° 003 al n° 006).

Potresti realizzare un grader che legga i dati da determinati file. Un’esempio di grader che ho realizzato per risolvere circuiti:

int main(){
	for(int i = 0; i < 10; i++){
		string File_in = "input_00" + to_string(i) + ".txt";
		string File_out = "output_00" + to_string(i) + ".txt";
		FILE *fr = freopen(File_in.c_str(), "r", stdin);
		FILE *fw = freopen(File_out.c_str(), "w", stdout);
		// mi assicuro che si aprono i file 
		assert(fr != NULL);
		assert(fw != NULL);
		// leggo 
		int T, N, C;
		cin >> T >> N >> C;
		switch(T){
			case 1: somma(N,C);break;
			case 2: prefissi(N,C);break;
			case 3: massimo_sottoarray(N,C);break;
			default: cout << "Nessuna scelta \n"; assert(false);break;
		}
		// chiudo i file
		fclose(fr);
		fclose(fw);
	}
	return 0;
}

Ora nelle varie funzioni che richiama posso risolvere quel determinato subtask stampando l’output su stdout.
Per poter aprire solo un determinato sottoinsieme puoi utilizzare un vettore dove inserisci gli identificativi dei file da evitare o fare.

2 Mi Piace

Se sei su linux potresti anche utilizzare un for dal terminal per eseguire il programma su ogni file di input.