//******************************************************************
// Incomes program
// This program reads a file of income amounts classified by
// gender and computes the average income for each gender
//******************************************************************
#include <iostream>
#include <iomanip>    // For setprecision()
#include <fstream>    // For file I/O
#include <string>     // For string type

using namespace std;

int main()
{
    char     sex;              // Coded 'F' = female, 'M' = male
    int      femaleCount;      // Number of female income amounts
    int      maleCount;        // Number of male income amounts
    float    amount;           // Amount of income for a person
    float    femaleSum;        // Total of female income amounts
    float    maleSum;          // Total of male income amounts
    float    femaleAverage;    // Average female income
    float    maleAverage;      // Average male income
    ifstream incFile;          // File of income amounts
    string   fileName;         // External name of file

    cout << fixed << showpoint                // Set up floating pt.
         << setprecision(2);                  //   output format

    // Separately count females and males, and sum incomes

    // Initialize ending condition

    cout << "Name of the income data file: ";
    cin >> fileName;
    incFile.open(fileName.c_str());         // Open input file
    if ( !incFile )                         //   and verify attempt
    {
       cout << "** Can't open input file **" << endl;
       return 1;
    }
    incFile >> sex >> amount;               // Perform priming read

    // Initialize process

    femaleCount = 0;
    femaleSum = 0.0;
    maleCount = 0;
    maleSum = 0.0;

    while (incFile)
    {
        // Update process

        cout << "Sex: " << sex << " Amount: " << amount << endl;
        if (sex == 'F')
        {
            femaleCount++;
            femaleSum = femaleSum + amount;
        }
        else
        {
            maleCount++;
            maleSum = maleSum + amount;
        }

        // Update ending condition

        incFile >> sex >> amount;
    }

    // Compute average incomes

    femaleAverage = femaleSum / float(femaleCount);
    maleAverage = maleSum / float(maleCount);

    // Output results

    cout << "For " << femaleCount << " females, the average "
         << "income is " << femaleAverage << endl;
    cout << "For " << maleCount << " males, the average "
         << "income is " << maleAverage << endl;
    return 0;
}
