Menu
Coddy logo textTech

Логика пополнения

Часть раздела Объектно-ориентированное программирование путешествия по C на Coddy. Урок 24 из 61.

challenge icon

Задание

Легко

Пора добавить первую настоящую банковскую операцию в ваш модуль Account: возможность вносить средства! Функция deposit должна быть интеллектуальной: она должна принимать только положительные суммы, защищая ваш account от invalid транзакций.

Основываясь на существующем проекте Bank Account, вы расширите модуль, добавив функциональность deposit. Ваша функция deposit должна проверять входные данные перед изменением скрытого balance. Так инкапсуляция защищает целостность ваших данных.

Вы будете работать с тремя файлами:

  • account.h: расширьте существующий заголовочный файл, добавив новый прототип функции: deposit. Эта функция должна принимать указатель Account и сумму double, возвращая int (1 при успехе, 0, если сумма invalid). Сохраните существующие объявления для create_account и destroy_account.
  • account.c: Implement функцию deposit вместе с существующими конструктором и деструктором. Deposit должен выполняться только в том случае, если сумма положительная (больше нуля). Если сумма корректна, добавьте её к скрытому balance и верните 1. Если сумма равна нулю или отрицательна, отклоните её, вернув 0 и не изменяя balance.
  • main.c: продемонстрируйте функциональность deposit, создав account и выполнив несколько операций deposit — как корректных, так и invalid, — чтобы показать, что проверка работает правильно.

Вы получите три входных значения: идентификатор account (целое число), корректную сумму deposit (положительное число) и invalid сумму deposit (ноль или отрицательное число).

В основном файле создайте account с указанным идентификатором и выведите подтверждение. Затем сначала попробуйте внести invalid сумму: выведите, выполнена ли операция успешно, и отметьте, что balance должен остаться без изменений. После этого внесите корректную сумму: выведите результат операции. Наконец, уничтожьте account и подтвердите очистку.

Выведите результат в следующем формате:

Account 1001 created
Deposit -50.00: 0
Deposit 200.00: 1
Account destroyed

Здесь 1001 — идентификатор account, -50.00 — invalid сумма, а 200.00 — корректная сумма. Форматируйте все суммы с двумя знаками после запятой, используя %.2f.

Ваша функция deposit выступает в роли привратника. Она гарантирует, что только корректные транзакции могут изменять скрытый balance account. Хотя пока вы не можете увидеть balance (мы добавим getter на следующем уроке), вы можете быть уверены, что invalid операции deposit правильно отклоняются.

Попробуйте сами

#include <stdio.h>
#include "account.h"

int main() {
    int account_id;
    scanf("%d", &account_id);
    
    Account* account = create_account(account_id);
    printf("Account %d created\n", account_id);
    
    destroy_account(account);
    printf("Account destroyed\n");
    
    return 0;
}

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор C