SOURCE FILE: incomes.cpp


//******************************************************************
// 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;
}