/* qualityControl.cpp shows a distribution of component failure 
 * rates that are stored in an input file.
 *
 *  Input(file):    a sequence of failure rates
 *  Output(screen): the number and percentage of occurrences 
 *                    of each failure rate
 ***************************************************************/

#include <iostream>                 // cout, <<, fixed, showpoint
#include <fstream>                  // ifstream, >>, eof(), close()
#include <iomanip>                  // setprecision()
#include <string>                   // string, getline()
#include "Query.h"                  // interactiveOpen()
using namespace std;

const int CAPACITY = 6;                     // # of array elements

int main()
{
   cout << "Quality Control: Component Failure Frequency Distribution.\n\n";

   ifstream inStream;
   interactiveOpen(inStream);
  int count[CAPACITY] = {0},               // array of counters
      numFailures,                          // input variable
      numCircuitBoards = 0;                 // # of input values

   for (;;)                                 // loop:
   {
      inStream >> numFailures;              //   read input value
      if (inStream.eof()) break;            //   if done, quit
      count[numFailures]++;                 //   increment its counter
      numCircuitBoards++;                   //   one more input value
   }                                        // end loop
   inStream.close();                        // close the stream

   cout << "\nOut of " << numCircuitBoards << " circuit boards:\n"
        << setprecision(1) << fixed << showpoint;

   for (int i = 0; i < CAPACITY; i++)       // output counters
      cout << count[i] << " had " << i
           << " failed components ("        // and percentages
           << double(count[i]) / numCircuitBoards * 100
           << "%)" << endl;

   return 0;
}
