Menu
Coddy logo textTech

Lógica de Depósito

Parte da seção Object Oriented Programming do Journey de C da Coddy — lição 24 de 61.

challenge icon

Desafio

Fácil

É hora de adicionar a primeira operação bancária real ao seu módulo Account — a capacidade de depositar fundos! Uma função de depósito precisa ser inteligente: ela deve aceitar apenas valores positivos, protegendo sua conta de transações inválidas.

Com base no seu projeto Bank Account existente, você estenderá o módulo com a funcionalidade de depósito. Sua função de depósito deve validar a entrada antes de modificar o saldo oculto — isso é o encapsulamento trabalhando para proteger a integridade dos seus dados.

Você trabalhará com três arquivos:

  • account.h: Estenda seu cabeçalho existente adicionando um novo protótipo de função: deposit. Esta função deve receber um ponteiro Account e um valor double, retornando um int (1 para sucesso, 0 se o valor for inválido). Mantenha suas declarações existentes para create_account e destroy_account.
  • account.c: Implemente a função deposit junto com seu construtor e destruidor existentes. O depósito só deve ser bem-sucedido se o valor for positivo (maior que zero). Se for válido, adicione o valor ao saldo oculto e retorne 1. Se o valor for zero ou negativo, rejeite-o retornando 0 sem alterar o saldo.
  • main.c: Demonstre sua funcionalidade de depósito criando uma conta e realizando múltiplas operações de depósito — algumas válidas, outras inválidas — para mostrar que sua validação funciona corretamente.

Você receberá três entradas: o ID da conta (um número inteiro), um valor de depósito válido (um número positivo) e um valor de depósito inválido (zero ou negativo).

No seu arquivo principal, crie uma conta com o ID fornecido e imprima uma confirmação. Em seguida, tente depositar o valor inválido primeiro — imprima se a operação foi bem-sucedida e observe que o saldo deve permanecer inalterado. Depois, deposite o valor válido — imprima o resultado de sucesso. Por fim, destrua a conta e confirme a limpeza.

Imprima a saída neste formato:

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

Onde 1001 é o ID da conta, -50.00 é o valor inválido e 200.00 é o valor válido. Formate todos os valores com duas casas decimais usando %.2f.

Sua função de depósito atua como um guardião — ela garante que apenas transações válidas possam modificar o saldo oculto da conta. Embora você ainda não possa ver o saldo (adicionaremos um getter em uma lição posterior), você pode confiar que os depósitos inválidos estão sendo rejeitados corretamente.

Experimente você mesmo

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

Todas as lições de Object Oriented Programming