Esercitazione 7 Giovedi 4 Dicembre  2008

Esercizio 1

In C++ le operazioni di I/O su file sono definite nella libreria fstream.
Per lavorare su un file occorre seguire i seguenti passi:

·       definire  nomi  interni, legarli a quelli  esterni, ed aprire i file  veri in lettura / scrittura  (es. usando ifstream/ofstream)

·       lavorare usando i nomi interni leggendo e scrivendo in modo sequenziale es. usando >>, get, getline, <<, putline (vedi iostream )

·       chiudere i file aperti (close)

Ad esempio considerate il seguente programma che legge 5 float da un file dati.dat e ne calcola la media

#include <fstream>

#include <iostream>

 

using namespace std;

 

main(){

 

  double val,somma=0.0;

  int i;

  ifstream inFile ("dati.dat");

/* oppure

  ifstream inFile;

  inFile.open("dati.dat");

*/

 

  if (!inFile) {

    cout << "Errore nell'apertura del file" << endl;

  } else {

    for(i=0; i<5; ++i) {

      inFile >> val;

      somma +=val;

    }

    inFile.close();

  }

  cout << "Media=" << somma/i;

}

Provate ad eseguirlo creando (es. con un editor e dalla shell) prima un file dati.dat  con almeno 5 numeri (costanti float) nella stessa directory dove eseguite il programma.

Esercizio 2

Modificate ora il programma in modo da leggere da un file dati.dat N numeri float,  ordinarli con una delle funzioni viste nella esercitazione 3, e quindi stampare i valori ordinati su un file
con nome ouput.dat aperto in output usando ofstream.

 

Esercizio 3

Supponiamo che in un file di testo  (senza i caratteri / e *) si possano inserire dei commenti stile C racchiusi tra i delimitatori /* …  */.

Scrivere un programma che dato in input un file con commenti  (es. input.dat), produce in output il file ripulito da tutti i commenti (es ouput.dat).

 

Esercizio 4

Supponiamo di inserire sempre all’inizio dei nostri programmi C++ una descrizione del programma racchiusa tra commenti /* … */ .

Scrivere ora un programma che, preso in input un file lista.dat contenente una lista di nomi di programmi da analizzare, costruisce un file indice.dat
dove per ogni programma in lista.dat si indicare il nome e di seguito (o in un nuovo paragrafo) la descrizione estratta dal commento

all’inizio del programma stesso.

 

Ad esempio supponiamo che lista.dat contenga prog1.cpp  prog2.cpp

Se prog1.cpp contiene il commento

 

/* Primo esempio di prova */

 

e prog2.cpp contiene il commento

 

/* Secondo esempio di prova */

 

allora il file indice.cpp conterra’ ad esempio:

 

prog1.cpp:

Primo esempio di prova

prog2.cpp:

Secondo esempio di prova