// Определения 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);