Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика отчет.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
241.15 Кб
Скачать

Void display()

{

cout<<"shit";

cout<<accountNumber;

cout<< " = " << balance;

cout<< " nomer snjatia = ";

cout<< noWithdrawals;

}

protected:

unsigned accountNumber;

double balance;

int noWithdrawals;

};

void Savings::withdrawal(double amount)

{

if (balance < amount)

{

cout << "nedostatochno deneg na schete: "

<< "balans raven " << balance

<< ",snimaetsja " << amount;

}

else

{

// после первого в месяце снятия денег...

if (++noWithdrawals > 1)

{

// ...удерживать S5

balance -= 5.00;

}

// снять деньги

balance -= amount;

}

}

// объявление прототипов

void process(Checking* pChecking);

void process(Savings* pSavings);

// объекты чековых и сберегательных счетов

Checking* chkAcnts[maxAccounts];

Savings* svgAcnts[maxAccounts];

// main — собирает и выводит данные

int main(int argcs, char* pArgs[])

{

// повторять цикл до ввода 'X1 или 'х'

int noChkAccounts=0;// содержит количество счетов

int noSvgAccounts = 0;

char accountType; // тип счета — 'S' или 'С'

while (1)

{

cout << "Vvedite S dlja sberegatelnogo scheta, "

<< "C dlja chekovyx, "

<< "X dlja vyxoda:";

cin >> accountType;

// выйти из цикла, если пользователь взедет X

if (accountType == 'x' || accountType == 'X')

{

break;

}

// E противном случае обрабатывать соответствующий счет

switch (accountType)

{

// чековые счета

case 'c':

case 'C':

if (noChkAccounts < maxAccounts)

{

int acnt;

cout << "vvedite nomer scheta:";

cin >> acnt;

chkAcnts[noChkAccounts] = new Checking(acnt);

process(chkAcnts[noChkAccounts]);

noChkAccounts++;

}

else

{

cout << "Dlja chekovyx schetov bolshe net mesta";

}

break;

// сберегательные счета

case 's':

case 'S':

if (noSvgAccounts < maxAccounts)

{

int acnt;

cout << "vvedite nomer scheta:";

cin >> acnt;

svgAcnts[noSvgAccounts] = new Savings(acnt);

process(svgAcnts[noSvgAccounts]) ;

noSvgAccounts++;

}

else

{

cout << "Dlja sberegatelnyx scetov bolshe net mesta";

}

break;

default:

cout << "Neponjatnyj simvol...";

}

}

//А теперь показать общую сумму

double chkTotal = 0;

cout << "Chekovye scheta:";

for (int i = 0; i < noChkAccounts; i++)

{

chkAcnts[i]->display();

chkTotal += chkAcnts[i]->acntBalance();

}

double svgTotal = 0;

cout << "Sberegatelnye scheta:\n";

for (int j = 0 ; j < noSvgAccounts; j++)

{

svgAcnts[j]->display();

svgTotal += svgAcnts [j] ->acntBalance();

}

double total = chkTotal + svgTotal;

cout<<"symm po shekovim shitam";

cout<< chkTotal;

cout<<"symm po sbereg shitam=";

cout<< svgTotal<<endl;

cout<<"obhay symma=";

cout<< total;

return 0;

}

// обработка(Checking) — ввод данных по чековым счетам

void process (Checking* pChecking){

cout<<"enter pologit shislo for fklad";

cout<< "otritcatelnoe dlja snjatia, 0 dlja zavershenia";

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 << "vvedite polozhitelnoe chislo dlja vklada,"

<< "otritcatelnoe dlja snjatia, 0 dlja zavershenia";

double transaction;

do

{

cout << ":";

cin >> transaction;

// вклад

if (transaction > 0)

{

pSavings->deposit(transaction);

}

// снятие

if (transaction < 0)

{

pSavings->withdrawal(-transaction);

}

}while (transaction != 0);

}