Menu
Coddy logo textTech

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

Часть раздела Object Oriented Programming путешествия по C на Coddy — урок 24 из 61.

challenge icon

Задание

Легко

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

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

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

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

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

В вашем основном файле создайте аккаунт с заданным ID и выведите подтверждение. Затем сначала попытайтесь внести невалидную сумму — выведите, была ли операция успешной, и отметьте, что баланс должен остаться неизменным. Затем внесите валидную сумму — выведите результат успеха. Наконец, удалите аккаунт и подтвердите очистку.

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

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

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

Ваша функция депозита действует как привратник — она гарантирует, что только валидные транзакции могут изменять скрытый баланс аккаунта. Даже если вы пока не видите баланс (мы добавим геттер в следующем уроке), вы можете быть уверены, что невалидные депозиты отклоняются должным образом.

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

#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;
}

Все уроки раздела Object Oriented Programming