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