Programmi C / C++ - prof. Claudio Maccherani - Perugia - 2008
Input/Output da/su File di Testo
[
.txt
]
(
per Olimpiadi Informatica, modalità C++
)
/* "InOutC++.cpp": programma C++ di esempio per input/output da/su file testo; modalità C++, per OII (Olmpiadi Italiane di Informatica) Dev-C++ - prof. Claudio Maccherani - 2006-2007 input1.txt output1.txt +----------+ +-----------+ 1) legge da input1.txt il numero di | 4 | | 10 | numeri, li memorizza su un vettore, | 5 | | 16 | li raddoppia, li memorizza su | 8 | | 600 | output1.txt | 300 | | 80 | | 80 | +-----------+ +----------+ input2.txt output2.txt +----------+ +-----------+ 2) legge da input2.txt il numero di | 4 | | 13 | coppie di dati da sommare, le | 8 5 | | 33 | somma, memorizza i risultati su | 3 30 | | 21 | output2.txt | 15 6 | | 29 | | 9 20 | +-----------+ +----------+ input3.txt output3.txt +----------+ +-----------+ 3) legge da input3.txt il numero di | 4 | | 3 | stringhe di '@' e '#' del file, | @#@@### | | 2 | conta le '@', memorizza i | ##@#@## | | 5 | risultati su output3.txt | @#@@#@@ | | 3 | | #@#@#@# | +-----------+ +----------+ */ #include
#include
void InOut1(); // 1) raddoppio dei numeri void InOut2(); // 2) somma delle coppie di numeri void InOut3(); // 3) conteggio delle '@' int main() { cout<<"Programma C++ di Input/Output da/su file testo
\n\n"; InOut1(); // input1.txt -> raddoppio -> output1.txt InOut2(); // input2.txt -> somma coppie -> output2.txt InOut3(); // input3.txt -> conto delle '@' -> output3.txt cout<<"\nInvio ..."; getchar(); return 0; } void InOut1() { // 1) raddoppio dei numeri (input1.txt -> output1.txt) int n; cout<<"1) - raddoppio dei numeri\n"; // lettura da input1.txt ifstream fin("input1.txt"); // "ifstream" classe per input da file testo fin >> n; // legge il numero di numeri da raddoppiare int v[n]; // definisce un vettore di appoggio for ( int i = 0; i < n; i++ ) fin >> v[i]; fin.close(); // raddoppio dei numeri for ( int i = 0; i < n; i++ ) v[i] = v[i] * 2; // memorizzazione su output1.txt ofstream fout("output1.txt"); // "ofstream" classe per output su file testo for ( int i = 0; i < n; i++ ) fout << v[i] << "\n"; fout.close(); } void InOut2() { // 2) somma delle coppie di numeri (input2.txt -> output2.txt) int n; cout<<"2) - somma delle coppie di numeri\n"; // lettura da input2.txt ifstream fin("input2.txt"); // "ifstream" classe per input da file testo fin >> n; // legge il numero di coppie a sommare int v1[n],v2[n]; // definisce dei vettori di appoggio for ( int i = 0 ; i < n ; i++ ) fin >> v1[i] >> v2[i]; fin.close(); // somma dei numeri for ( int i = 0; i < n; i++ ) v1[i] = v1[i] + v2[i]; // memorizzazione su output2.txt ofstream fout("output2.txt"); // "ofstream" classe per output su file testo for ( int i = 0; i < n; i++ ) fout << v1[i] << "\n"; fout.close(); } void InOut3() { // 3) conteggio delle '@' (input3.txt -> output3.txt) int n; cout<<"3) - conteggio delle '@'\n"; // lettura da input3.txt ifstream fin("input3.txt"); // "ifstream" classe per input da file testo fin >> n; // legge il numero di coppie a sommare char st[n][80]; // definisce gli array di appoggio int v[n]; for ( int i = 0 ; i < n ; i++ ) fin >> st[i]; fin.close(); // conta le '@' for ( int i = 0; i < n; i++ ) { v[i] = 0; for ( int j = 0; st[i][j] != '\0'; j++ ) if (st[i][j] == '@') v[i]++; } // memorizzazione su output3.txt ofstream fout("output3.txt"); // "ofstream" classe per output su file testo for ( int i = 0; i < n; i++ ) fout << v[i] << "\n"; fout.close(); }