Faça um Programa para um caixa eletrônico. O programa deverá perguntar ao usuário a valor do saque e depois informar quantas notas de cada valor serão fornecidas. As notas disponíveis serão as de 2,5,10,50,100 e 200 reais. O valor mínimo é de 20 reais e o máximo de 500 reais. O programa não deve se preocupar com a quantidade de notas existentes na máquina.

Passo 1

O enunciado pede um programa para um caixa eletrônico que:
  • Pergunta ao usuário o valor de saque (mínimo de 20 e máximo de 500 reais).
  • Calcula quantas notas de R 200, R 100, R 50, R 10, R 5 e R 2 são necessárias para compor esse valor, usando a maior quantidade possível de notas de maior valor (estratégia gulosa).
  • Exibe quantas notas de cada tipo serão fornecidas.

Passo 2

Validar o valor de saque:
  • Se o valor for menor que 20 ou maior que 500, imprimir mensagem de erro e encerrar o programa.
  • Caso contrário, prosseguir para distribuir as notas.

Passo 3

Aplicar o algoritmo guloso de distribuição de notas:
  1. Ordenar as denominações em ordem decrescente: 200, 100, 50, 10, 5, 2.
  2. Para cada denominação, determinar quantas notas cabem no valor restante e atualizar o restante.

Passo 4

Detalhamento do cálculo das notas e do restante:
  • notas200 ← valor div 200
  • valor ← valor mod 200
  • notas100 ← valor div 100
  • valor ← valor mod 100
  • notas50 ← valor div 50
  • valor ← valor mod 50
  • notas10 ← valor div 10
  • valor ← valor mod 10
  • notas5 ← valor div 5
  • valor ← valor mod 5
  • notas2 ← valor div 2
  • valor ← valor mod 2
Como usamos apenas notas de 2 e 5 para tratar restos ímpares, para qualquer valor entre 20 e 500 não haverá resto não atendido (resto final será zero).

Passo 5

Exibir o resultado na tela, listando quantas notas de cada valor serão entregues.

Resposta

Segue um pseudocódigo em estilo estruturado:
programa CaixaEletronico
leia(valor)
se valor < 20 ou valor > 500 então
escreva(“Valor inválido. Informe um valor entre R 20 e R 500.”)
pare
fim se
notas200 ← valor div 200
valor ← valor mod 200
notas100 ← valor div 100
valor ← valor mod 100
notas50 ← valor div 50
valor ← valor mod 50
notas10 ← valor div 10
valor ← valor mod 10
notas5 ← valor div 5
valor ← valor mod 5
notas2 ← valor div 2
valor ← valor mod 2
escreva("Notas de R$ 200: ", notas200)
escreva("Notas de R$ 100: ", notas100)
escreva("Notas de R$ 50: ", notas50)
escreva("Notas de R$ 10: ", notas10)
escreva("Notas de R$ 5: ", notas5)
escreva("Notas de R$ 2: ", notas2)
fim programa

Exercícios relacionados