Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Contador de cédulas únicas

Um banco está desenvolvendo um sistema para caixas eletrônicos e precisa de um programa que simule o saque de dinheiro. O caixa deve entregar o valor solicitado pelo usuário usando a menor quantidade possível de cédulas. As cédulas disponíveis são: R$ 100, R$ 50, R$ 20, R$ 10, R$ 5 e R$ 2.

Crie um programa que solicite ao usuário o valor do saque e calcule quantas cédulas de cada tipo serão necessárias para entregar o valor. O programa deve garantir que o valor solicitado seja válido (múltiplo de 2, já que não há cédulas de R$ 1) e tratar erros de entrada caso não seja digitado um valor numérico válido.

Exemplo de entrada:
Digite o valor do saque: 188
Saída esperada:

Cédulas entregues:
1 de R$ 100
1 de R$ 50
1 de R$ 20
1 de R$ 10
1 de R$ 5
1 de R$ 2

Caso faça um saque de valor não válido (ímpar):

Erro: O valor deve ser múltiplo de 2.

    cedulas = [100, 50, 20, 10, 5, 2]

    try:
        valor_saque = int(input("Digite o valor do saque: "))
        if valor_saque % 2 != 0:
            print("Erro: O valor deve ser múltiplo de 2.")
        else:
            print(f"\nCédulas entregues para R$ {valor_saque}:")

            for cedula in cedulas: # A lógica gulosa faria com que sacasse R$187 dos R$188 solicitados, então assim verificando o numero 5 unico impar nas opções se o resto resultante seria par ou ímpar, condicionando a utilizar a cedula seguinte a R$2 , caso o resultado da subtração de 5 gerasse numero impar.
                if cedula == 5: 
                    if valor_saque >= 5 and valor_saque % 2 != 0:
                        quantidade = 1
                    else:
                        quantidade = 0
                else:
                    quantidade = valor_saque // cedula

                if quantidade > 0:
                    print(f"{quantidade} de R$ {cedula}")
                    valor_saque -= (quantidade * cedula)

    except ValueError:
        print("Erro: Por favor, digite um número inteiro válido.")
        

    Digite o valor do saque: 188

    Cédulas entregues para R$ 188:
    1 de R$ 100
    1 de R$ 50
    1 de R$ 20
    1 de R$ 10
    4 de R$ 2
1 resposta
solução!

Olá, Carlos, como vai?

O seu código soluciona o desafio de forma eficaz e demonstra um bom domínio sobre estruturas de controle e tratamento de exceções. A implementação da lógica específica para a cédula de cinco reais foi uma excelente saída para garantir que o saldo restante permaneça par, permitindo que as notas de dois reais finalizem o saque corretamente. O uso do bloco try-except assegura a robustez do programa contra entradas inválidas.

Parabéns pelo excelente exercício e por compartilhar sua lógica detalhada com a comunidade. Continue praticando e postando seus projetos. O fórum está à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!