/* esFile2.cpp
   Scrivere un programma che:
   1) Apre il file di nome interi.txt
   
   2) Legga dal file una sequenza di numeri interi 
   terminata dal carattere '.' (punto) 
   (la lettura degli interi si arresta quando viene 
   incontrato il primo punto)
   
   3) Se il punto 2) è stato eseguito correttamente 
   stampa nel file output.txt il numero di interi 
   letti e la media degli interi letti. 
   Se il punto 2 non è stato eseguito correttamente
   stampa nel file output.txt un messaggio di errore.   
   
   Provare il programma in 3 casi diversi:
      caso 1) contenuto di interi.txt:  13 7 4 16.
      caso 2) contenuto di interi.txt:  5 45 [ 47.
      caso 3) contenuto di interi.txt:  7 9 3
******************************************************/

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;

int main() {
  fstream	ff;
  ff.open("interi.txt", ios::in);
  if( !ff ){
    cout << "Errore nell'apertura del file 'interi.txt'"<<endl;
    exit(1);
  }

  int numero;
  int quanti = 0;
  int somma = 0;
  double media = 0;

	while( ff >> numero ){
    quanti++;
    somma += numero;
  }    

  ff.clear();
  char c;
  bool errore = false;
  ff >> c;
  
	if ( !ff || ( c != '.' ) )
       errore = true;

	ff.close();
	ff.clear();
  
  ff.open("output.txt", ios::out);  
  if( !ff ){
    cout << "Errore nell'apertura del file output.txt"<<endl;
    exit(1);
  }
	
	if (errore)
	  ff << "Errore nei dati in ingresso"<<endl;
  else{
    if ( quanti != 0 ){
	    media = (double)somma/quanti;
		  ff << "Numero dei valori letti: " << quanti << endl;
		  ff << "Valore medio dei dati letti: " << media << endl;
    }else
      ff << "Nessun intero trovato prima del punto" << endl;
  }    	
	ff.close(); 
  cout<<"(L'uscita del programma si trova nel file 'output.txt')"<<endl;
	return 0;
}
