- Uma conta começa com saldo zero. Para cada transação (“DEPOSITO” ou “SAQUE”), atualize o saldo. Rejeite saques com valor maior que o saldo. Retorne ou imprima o valor do saldo final e o total de rejeições que possam ter ocorrido. Considere a seguinte lista de transações:
transacoes = [
(“DEPOSITO”, 100.0),
(“SAQUE”, 30.0),
(“SAQUE”, 80.0),
(“DEPOSITO”, 50.0)
]
transacoes = [
(“DEPOSITO”, 100.0),
(“SAQUE”, 30.0),
(“SAQUE”, 80.0),
(“DEPOSITO”, 50.0)
]
Passo 1
O enunciado pede para processar uma sequência de transações que começam com saldo zero e, a cada transação, atualizar o saldo; se for um saque com valor maior que o saldo, esse saque deve ser rejeitado. No final, devemos retornar o valor do saldo final e o total de rejeições ocorridas. As informações dadas (peguei diretamente da lista do enunciado) são as transações:
Passo 2
Vamos resolver isso simulando as transações uma a uma, na ordem dada. Para isso definimos duas variáveis que vamos atualizar ao longo do processo:
que guarda o dinheiro atual na conta, e
que conta quantos saques foram rejeitados. Inicializamos:
Aqui
está em unidades monetárias e
é um contador inteiro.
Passo 3
Regra para um depósito: se a transação for do tipo “DEPOSITO” com valor
, então atualizamos o saldo somando esse valor:
Explicando: o símbolo
indica atribuição (ou seja, o novo valor de
passa a ser o resultado da soma). Por exemplo, se
e chega um depósito
, então
vira
.
Passo 4
Regra para um saque: se a transação for do tipo “SAQUE” com valor
, precisamos verificar se há fundos suficientes:
- se
, o saque é autorizado e fazemos
- se
, o saque é rejeitado e fazemos
e o
permanece igual.
Explicando a desigualdade: significa que o valor do saque não excede o que tem na conta; se exceder, não podemos permitir o saque.
Explicando a desigualdade:
Passo 5
Agora aplicamos as regras à primeira transação, que é um depósito de
. Antes dessa transação tínhamos:
Aplicando a regra do depósito com
:
Portanto, após a primeira transação:
Passo 6
Segunda transação: é um saque de
. Verificamos a condição:
Sim, é verdadeira, então autorizamos o saque e atualizamos:
O contador de rejeições permanece:
Após a segunda transação:
Passo 7
Terceira transação: é um saque de
. Verificamos:
Não — a desigualdade é falsa, pois
. Logo esse saque deve ser rejeitado. Aplicamos a regra de rejeição:
O saldo não muda:
Após a terceira transação:
Passo 8
Quarta transação: é um depósito de
. Aplicamos a regra do depósito com
:
O número de rejeições não muda:
Após a quarta transação (e como não há mais transações), temos o resultado final:
Resposta
Saldo final:
Total de rejeições:
Total de rejeições: