// Определения const int MIN_ALLOWABLE_EMPLOYEES = 1;

const int MAX_ALLOWABLE_EMPLOYEES = 20;

const int MIN_NUM_EXPEMSES = 1;

const int MAX_NUM_EXPENSES = 10;

const float MIN_ALLOWABLE_EXPENSE = l.OF;

const float MAX_ALLOWABLE_EXPENSE = 1000.OF;

const float MAX_ALLOWABLE_REIMBURSEMENT = 5000.OF;

void mainfint argc, char *argv[]) ( ,

// Проверить количество аргументов командной строки if (argc \= 2) (

cout « "USAGE: expsum2 <infile name>\n\n";

return;

)'

// Открыть входной файл ifstream infile(argv[l], ios::nocreate);

if (!infile) (

cout « "Expense file \"" « argv[l] « "\" not found.\n\n";

return;

}

// Главный блок try try {

// Прочитать количество служащих unsigned EmployeeCount;

float FileTotal = O.OF;

infile » EmployeeCount;

if (EmployeeCount < MIN_ALLOWABLE_EMPLOYEES I I EmployeeCount > MAX_ALLOWABLE_EMPLOYEES) throw ExpException(EXP_GENERIC_ERROR,

"Invalid number of employees specified "in expense file.");

// Установка флагов форматирования потока вывода cout.setf(ios::left I ios::showpoint I ios::fixed);

cout.precision(2) ;

// Вывести шапку отчета cout « "+=================================="

cout « "I EXPENSE FILE "

« "PROCESSOR 1\n";

cout « "+=================================="

« "==================================+\n\n\n"

// Главный цикл по служащим do { .

FileTotal += ProcessEmployee(infile);

} while (—EmployeeCount);