Suponha que um caixa disponha apenas de notas de 1, 10 e 100 reais. Faça um algoritmo que leia o valor de
produtos, até que seja digitado zero; calcule e imprima o valor total da compra; leia o valor pago pelo cliente e; mostre se existente, a quantidade de troco devido e a quantidade de notas de cada tipo que deverá ser retornada ao cliente. Considere que o caixa sempre deve fornecer a quantidade mínima de notas.
Passo 1
O enunciado pede um algoritmo que leia preços de produtos até que seja digitado zero, acumule o valor total da compra, leia o valor pago pelo cliente, calcule o troco (se houver) e distribua esse troco usando o mínimo de notas de 100, 10 e 1 real.
Passo 2
Começamos declarando variáveis: total (inicializada em 0), preco (para leitura do preço de cada produto) e um laço que se repete enquanto preco ≠ 0. A cada iteração, somamos preco em total.
Depois de sair do laço de leitura de produtos, lemos o valor_pago e calculamos troco = valor_pago – total. Se valor_pago for menor que total, mostramos mensagem de pagamento insuficiente e encerramos.
Depois de sair do laço de leitura de produtos, lemos o valor_pago e calculamos troco = valor_pago – total. Se valor_pago for menor que total, mostramos mensagem de pagamento insuficiente e encerramos.
Passo 3
Para distribuir o troco, usamos o algoritmo guloso: calculamos quantas notas de 100 cabem no troco (divisão inteira), então atualizamos o troco para o resto da divisão; repetimos para notas de 10 e, por fim, notas de 1.
Por fim, imprimimos o valor total da compra, o valor do troco e a quantidade de notas de cada tipo que será devolvida ao cliente.
Por fim, imprimimos o valor total da compra, o valor do troco e a quantidade de notas de cada tipo que será devolvida ao cliente.
Resposta
Algoritmo CaixaComNotas
total ← 0
// Leitura dos preços dos produtos
repita
escreva("Digite o preço do produto (0 para terminar): ")
leia(preco)
se preco < 0 então
escreva(“Preço inválido. Digite um valor não negativo.”)
senão
total ← total + preco
fim se
até preco = 0
total ← 0
// Leitura dos preços dos produtos
repita
escreva("Digite o preço do produto (0 para terminar): ")
leia(preco)
se preco < 0 então
escreva(“Preço inválido. Digite um valor não negativo.”)
senão
total ← total + preco
fim se
até preco = 0
escreva("Total da compra: R$ ", total)
escreva("Valor pago pelo cliente: R$ ")
leia(valor_pago)
escreva("Valor pago pelo cliente: R$ ")
leia(valor_pago)
se valor_pago < total então
escreva(“Pagamento insuficiente. Operação cancelada.”)
pare
fim se
escreva(“Pagamento insuficiente. Operação cancelada.”)
pare
fim se
troco ← valor_pago - total
escreva("Troco a devolver: R$ ", troco)
escreva("Troco a devolver: R$ ", troco)
// Cálculo do número mínimo de notas
notas100 ← troco div 100
troco ← troco mod 100
notas10 ← troco div 10
troco ← troco mod 10
notas1 ← troco // troco mod 1 é ele mesmo
notas100 ← troco div 100
troco ← troco mod 100
notas10 ← troco div 10
troco ← troco mod 10
notas1 ← troco // troco mod 1 é ele mesmo
escreva("Notas de R$100: ", notas100)
escreva("Notas de R$10: ", notas10)
escreva("Notas de R$1: ", notas1)
FimAlgoritmo
escreva("Notas de R$10: ", notas10)
escreva("Notas de R$1: ", notas1)
FimAlgoritmo