//*****************************************************************
// R. A. Hillyard
// fileAvg2.cpp 
// October 2001
//
// This version writes to an output file as well as the screen
//*****************************************************************

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;
void setDecimalPoint(ostream& myStream, int palces);

int main()
  {
  long int idnum;                   //variable for id number
  int mid1, mid2, final;            //variables for test scores
  double avg;                       //variable for average score

  ifstream scoreFile;               //declare an input file stream
  ofstream avgFile;
    
  scoreFile.open("scores.dat");     //open the file
  if(scoreFile.fail())              //check for success and exit if open failed
    {
    cout << "unable to open file\n";
    exit(1);
    }

  avgFile.open("average.dat");     //open the file
  if(avgFile.fail())               //check for success and exit if open failed
    {
    cout << "unable to open file\n";
    exit(1);
    }

  setDecimalPoint(cout, 2);    //set precision for output streams
  setDecimalPoint(avgFile, 2);
  //read data from file and process
  scoreFile >> idnum >> mid1 >> mid2 >> final;
  while (!scoreFile.eof())
    {
    avg = (mid1 + mid2 + 2*final) / 4.0;          //calculate average
    cout << idnum << setw(10) << avg << endl;     //output result to screen    
    avgFile << idnum << setw(10) << avg << endl;  //output result to file
    scoreFile >> idnum >> mid1 >> mid2 >> final;
    }//endwhile

  scoreFile.close(); //close files
  avgFile.close();
  return 0;
  }
/**************************************************************/
void setDecimalPoint(ostream& myStream, int palces)
  {
  myStream.setf(ios::showpoint);       //set percision for decimal numbers
  myStream.setf(ios::fixed);
  myStream.precision(palces);
  }
  
/*  
//*********************contents of scores.dat**********************
123456 82 79 91
234564 88 78 87
976523 91 92 90
782346 77 85 82
987656 62 92 84
345876 77 74 85

//************************program output***************************
123456     85.75
234564     85.00
976523     90.75
782346     81.50
987656     80.50
345876     80.25

//*********************contents of average.dat*********************
123456     85.75
234564     85.00
976523     90.75
782346     81.50
987656     80.50
345876     80.25

*/