Os bancos atualizam diariamente as contas de seus clientes. Essa atualização envolve a análise dos depósitos e retiradas de cada conta. Numa conta de saldo mínimo, uma taxa de serviço é deduzida se a conta cai abaixo de uma certa quantia especificada. Suponha que uma conta particular comece o dia com um saldo de \mathrm{R} \ 60,00 . O saldo mínimo exigido é R\íé 30,00 e se o saldo de fím de dia for menor do que isso, uma taxa é deduzida da conta. A fim de que essa atualização fosse feita utilizando computador, é fornecido, para cada conta, o seguinte conjunto de dados:
  • A primeira linha contém o número da conta, o valor do saldo atual e do saldo mínimo diário, quantidade de transações e taxa de serviço;
  • As linhas seguintes contêm o valor e o código da transação (depósito ou retirada).
Escrever um algoritmo que:
  • Calcule o saldo (saldo/débito) da conta ao fim do dia (se o saldo for negativo, isso significa insuficiência de fundos na conta);
  • Escreva, para cada conta, o seu número e o saldo calculado. Se não houver fundos, imprima o número da conta e a mensagem ‘NÃO HÁ FUNDOS’;
  • Utilize como flag o número da conta igual a zero.

Passo 1

O programa deve processar repetidamente os dados de cada conta bancária até encontrar o número de conta zero (flag de término). Para cada conta, temos como entrada:
  • número da conta \mathrm{int};
  • saldo atual \mathrm{float};
  • saldo mínimo diário \mathrm{float};
  • quantidade de transações \mathrm{int};
  • valor da taxa de serviço \mathrm{float};
    — e em seguida, para cada transação, o valor \mathrm{float} e o código (‘D’ para depósito ou ‘R’ para retirada).
    O objetivo é atualizar o saldo somando depósitos e subtraindo retiradas, cobrar a taxa se o saldo ficar abaixo do mínimo e, por fim, imprimir o resultado ou indicar “NÃO HÁ FUNDOS” se o saldo final for negativo.

Passo 2

Definimos as variáveis necessárias e a estrutura de repetição principal:
\text{numero\_conta}: inteiro lido como flag de controle;
– dentro do laço, lemos \text{saldo\_atual}, \text{saldo\_minimo}, \text{n\_transacoes} e \text{taxa\_servico};
– inicializamos \text{saldo} \leftarrow \text{saldo\_atual}.

Passo 3

Para processar as transações usamos um laço de 1 até \text{n\_transacoes}. Em cada iteração, lemos \text{valor} e \text{codigo\_transacao}.
Se \text{codigo\_transacao} = \text{'D'}, fazemos
\text{saldo} \leftarrow \text{saldo} + \text{valor},
senão (retirada)
\text{saldo} \leftarrow \text{saldo} - \text{valor}.

Passo 4

Após processar todas as transações, verificamos se o saldo ficou abaixo do mínimo:
se \text{saldo} < \text{saldo\_minimo}, então
\text{saldo} \leftarrow \text{saldo} - \text{taxa\_servico}.

Passo 5

Por fim, com o saldo atualizado, checamos se houve insuficiência de fundos:
– se \text{saldo} < 0, imprimimos o número da conta e a mensagem NÃO HÁ FUNDOS;
– caso contrário, imprimimos o número da conta e o valor de \text{saldo}.
Depois, lemos o próximo \text{numero\_conta} e repetimos até que ele seja zero.

Resposta

Pseudocódigo do algoritmo:
Ler numero_conta
Enquanto numero_conta \neq 0 faça
 Ler saldo_atual, saldo_minimo, n_transacoes, taxa_servico
 saldo ← saldo_atual
 Para i ← 1 até n_transacoes faça
  Ler valor, codigo_transacao
  Se codigo_transacao = ‘D’ então
   saldo ← saldo + valor
  Senao
   saldo ← saldo − valor
  FimSe
 Para
 Se saldo < saldo_minimo então
  saldo ← saldo − taxa_servico
 FimSe
 Se saldo < 0 então
  Imprimir numero_conta, “NÃO HÁ FUNDOS”
 Senao
  Imprimir numero_conta, saldo
 FimSe
 Ler numero_conta
FimEnquanto

Exercícios relacionados