//*****************************************************************
// R. A. Hillyard
// fileAvg1.cpp 
// October 2001
//
// This program reads in test scores from a file named scores.dat
// and computes each student's weighted average.  Each line of
// the file consists of the student's id number, followed by her
// scores on the two midterm exams and the final. For example,
// a typical line of the file might look like
//             134256 82 79 91
// The weighted average is calculated by counting the final
// to be the same as two exams.
// The output is printed to 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 variable
  
  setDecimalPoint(cout,2);
  
  scoreFile.open("scores.dat");     //open the file
  if(scoreFile.fail())              //check for success and exit if open failed
    {
    cout << "unable to open file scores.dat\n";
    exit(1);
    }

  //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
    scoreFile >> idnum >> mid1 >> mid2 >> final;
    }//end while

  scoreFile.close();   //close file
  cin >> idnum;
  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

*/