Контест Junior ООП в C# обновлено

Банковские счета: инкапсуляция и инварианты

Условие

Реализуйте простой банк. Баланс счёта не может стать отрицательным, суммы операций строго положительные.

Команды:

  • OPEN name открыть счёт с балансом 0 (ERROR exists, если уже есть);
  • DEPOSIT name x пополнить;
  • WITHDRAW name x снять;
  • TRANSFER from to x перевести (перевод самому себе разрешён и баланс не меняет);
  • BALANCE name вывести баланс.

На каждую команду выведите OK, баланс (для BALANCE) или ошибку. Проверки идут в порядке: ERROR no account (какого-то счёта нет), ERROR amount (x ≤ 0), ERROR insufficient (не хватает денег).

Ввод: n (1 ≤ n ≤ 10⁴), затем n команд. |x| ≤ 10¹², имена из латиницы и цифр.

Пример

6
OPEN anna
DEPOSIT anna 100
WITHDRAW anna 30
WITHDRAW anna 100
BALANCE anna
BALANCE boris
OK
OK
OK
ERROR insufficient
70
ERROR no account

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме