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
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
100, R 10, 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:
- Ordenar as denominações em ordem decrescente: 200, 100, 50, 10, 5, 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 500.”)
pare
fim se
leia(valor)
se valor < 20 ou valor > 500 então
escreva(“Valor inválido. Informe um valor entre R
pare
fim se
notas200 ← valor div 200
valor ← valor mod 200
valor ← valor mod 200
notas100 ← valor div 100
valor ← valor mod 100
valor ← valor mod 100
notas50 ← valor div 50
valor ← valor mod 50
valor ← valor mod 50
notas10 ← valor div 10
valor ← valor mod 10
valor ← valor mod 10
notas5 ← valor div 5
valor ← valor mod 5
valor ← valor mod 5
notas2 ← valor div 2
valor ← valor mod 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
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