balance -= amount ;
}
}
/* Объявление прототипов */
void process( Checking* pChecking ) ;
void process( Savings* pSavings ) ;
/* Объекты чековых и сберегательных счетов */
Checking* chkAcnts[ maxAccounts ] ;
Savings* svgAcnts[ maxAccounts ] ;
/* main — собирает и выводит данные */
int main( int argcs , char* pArgs[ ] )
{
setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */
/* Повторять цикл до ввода 'X' или 'х' */
int noChkAccounts = 0 ; /* Содержит количество счетов */
int noSvgAccounts = 0 ;
char accountType ; /* Тип счёта — 'S' или 'С' */
while ( 1 )
{
cout << "Введите S для сберегательных счетов, " << "\n"
<< "С для чековых, "
<< "X для выхода:" ;
cin >> accountType ;
/* Выйти из цикла, если пользователь введёт X */
if ( accountType == 'x' || accountType == 'X' )
{
break ;
}
/* В противном случае обрабатывать соответствующий счёт */
switch ( accountType )
{
/* чековые счета */
case 'c' :
case 'C' :
if ( noChkAccounts < maxAccounts )
{
int acnt ;
cout << "Введите номер счёта:" ;
cin >> acnt ;
chkAcnts[ noChkAccounts ] = new Checking( acnt ) ;
process( chkAcnts[ noChkAccounts ] ) ;
noChkAccounts++ ;
}
else
{
cout << "Для чековых счетов больше нет места\n" ;
_________________
351 стр. Глава 31. Программа BUDGET
}
break ;
/* сберегательные счета */
case 's' :
case 'S' :
if ( noSvgAccounts < maxAccounts )
{
int acnt ;
cout << "Введите номер счёта:" ;
cin >> acnt ;
svgAcnts[ noSvgAccounts ] = new Savings( acnt ) ;
process( svgAcnts[ noSvgAccounts ] ) ;
noSvgAccounts++ ;
}
else
{
cout << "Для сберегательных счетов "
<< "больше нет места\n" ;
}
break ;
default :
cout << "Непонятный символ...\n" ;
}
}
/* А теперь показать общую сумму */
double chkTotal = 0 ;
cout << "Чековые счета:\n" ;
for ( int i = 0 ; i < noChkAccounts ; i++ )
{
chkAcnts[ i ] -> display( ) ;
chkTotal += chkAcnts[ i ] -> acntBalance( ) ;
}
double svgTotal = 0 ;
cout << "Сберегательные счета:\n" ;
for ( int j = 0 ; j < noSvgAccounts ; j++ )
{
svgAcnts[ j ] -> display( ) ;
svgTotal += svgAcnts[ j ] -> acntBalance( ) ;
}
double total = chkTotal + svgTotal ;
cout << "Сумма по чековым счетам = "
<< chkTotal
<< "\n" ;
cout << "Сумма по сберегательным счетам = "
<< svgTotal
<< "\n" ;
cout << "Общая сумма = "
<< total
<< "\n" ;
_________________
352 стр. Часть 6. Великолепная десятка
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
/* обработка( Checking ) — ввод данных по чековым счетам */
void process( Checking* pChecking )
{
cout << "Введите положительное число для вклада,\n"
<< "отрицательное для снятия, 0 для завершения\n" ;
double transaction ;
do
{
cout << ":" ;
cin >> transaction ;
// Вклад
if ( transaction > 0 )
{
pChecking -> deposit( transaction ) ;
}
// Снятие
if ( transaction < 0 )
{
pChecking -> withdrawal( -transaction ) ;
}
} while ( transaction != 0 ) ;
}
/* обработка( Savings ) — ввод данных для сберегательных счетов */
void process( Savings* pSavings )
{
cout << "Введите положительное число для вклада,\n"
<< "отрицательное для снятия, 0 для завершения\n" ;
double transaction ;
do
{
cout << ":" ;
cin >> transaction ;
// Вклад
if ( transaction > 0 )
{
pSavings -> deposit( transaction ) ;
}
// Снятие
if ( transaction < 0 )
{
pSavings -> withdrawal( -transaction ) ;
}
} while ( transaction != 0 ) ;
}
_________________
353 стр. Глава 31. Программа BUDGET
Я запустил эту программу с приведёнными ниже данными для того, чтобы продемонстрировать, как она работает. Жирным шрифтом выделен пользовательский ввод, а обычным представлены сообщения программы.

Введите S для сберегательных счетов,
С для чековых, X для выхода: S
Введите номер счёта: 123
Введите положительное число для вклада,
отрицательное для снятия, 0 для завершения
: 200
: -20
: 0
Введите S для сберегательных счетов,
С для чековых, X для выхода: S
Введите номер счёта:234
Читать дальше