Домашно 2
(За първа група: срок за изпращане на домашното - 19.04 на nkirov@nbu.bg)
Задача 1 (Exercise P9.14).
Банка съхранява всички банкови сметки във файл с произволен (пряк)
достъп, в който всеки ред има формата:
account_number balance
Напишете програма bankomat, която симулира автоматична машина за разплащане.
Потребител може да депозира пари на сметка (deposit), като посочи номера на сметката и сумата, да изтегли
пари (withdraw), да поиска да види баланса (query) и да
прехвърли пари от една сметка в друга (transfer). След всяка
операция да се обновява файла на банката.
Да се използва класа:
class Account {
public:
Account(string, double);
void deposit(double);
bool withdraw(double);
double query() const;
bool transfer(Account &, double);
private:
string acc;
double bal;
};
Да се направа заглавен файл (account.h) с дефинициата на класа, файл account.cpp c дефинициите
на член-функциите на класа и файл bankomat.cpp с останалата част
на програмата.
Да се изпълни програмата със следния команден ред:
bankomat bank.txt < input.txt
Примерен файл bank.dat с банкови сметки
ABC2389000 223.90
ZXX7098602 1290.00
VGF0987200 45098.50
CDH9998098 10100.00
Примерен файл input.txt с операции на автоматичната машина за разплащане
ABC2389000 deposit
100.00
VGF0987200 withdraw 50.00
VGF0987200
query
ABC2389000 query
ABC2389000
transfer VGF0987200
250.00
ABC2389000
withdraw
5000.00
ABC2389000 query
Отговор на машината (cout) за всяка операция:
ABC2389000
323.90
VGF0987200 1240.00
VGF0987200 1240.00
ABC2389000
323.90
ABC2389000
73.90
VGF0987200 1490.00
ABC2389000 73.90 ERROR
ABC2389000 73.90
Пояснение: ERROR се отпечава когато операцията не
може да бъде изпълнена - в сметката има
по-малка сума от исканата за теглене или
прехвърляне.
Задача 2 (Exercise
P9.16).
Напишете програма catfiles, която свързва няколко
текстови файла в един файл. Например
catfiles chapter1.txt chapter2.txt chapter3.txt book.txt
създава файл book.txt който съдържа файловете:
chapter1.txt, chapter2.txt и chapter3.txt. Новият
файл винаги е последният файл на командния ред.