Skip to content

Instantly share code, notes, and snippets.

@JuniorPolegato
Created April 1, 2014 12:34
Show Gist options
  • Save JuniorPolegato/9913042 to your computer and use it in GitHub Desktop.
Save JuniorPolegato/9913042 to your computer and use it in GitHub Desktop.
Algoritmo simples para caixa eletrônico
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
# quantidade de notas de 50 disponível em notas_50_disponiveis
notas_50_disponiveis = 10
# quantidade de notas de 20 disponível em notas_20_disponiveis
notas_20_disponiveis = 10
# quantidade de notas de 10 disponível em notas_10_disponiveis
notas_10_disponiveis = 10
# quantidade de notas de 05 disponível em notas_05_disponiveis
notas_05_disponiveis = 10
# pedir valor e armazenar em valor como inteiro
valor = int(raw_input('Valor: '))
# fazer a divisão inteira do valor por 50 para saber quantas notas de 50 pode-se usar e armazenar em notas_50_possiveis
notas_50_possiveis = valor // 50
# se notas_50_possiveis maior que notas_50_disponiveis, fazer notas_50_utilizadas igual a notas_50_disponiveis, senão igual a notas_50_possiveis
if notas_50_possiveis > notas_50_disponiveis:
notas_50_utilizadas = notas_50_disponiveis
else:
notas_50_utilizadas = notas_50_possiveis
# calcular o restante do valor fazendo o valor menos notas_50_utilizadas vezes 50 e armazenar este resultado em resto_50
resto_50 = valor - notas_50_utilizadas * 50
# fazer a divisão inteira do resto_50 por 20 para saber quantas notas de 20 pode-se usar e armazenar em notas_20_possiveis
notas_20_possiveis = resto_50 // 20
# se notas_20_possiveis maior que notas_20_disponiveis, fazer notas_20_utilizadas igual a notas_20_disponiveis, senão igual a notas_20_possiveis
if notas_20_possiveis > notas_20_disponiveis:
notas_20_utilizadas = notas_20_disponiveis
else:
notas_20_utilizadas = notas_20_possiveis
# calcular o restante do valor fazendo o resto_50 menos notas_20_utilizadas vezes 20 e armazenar este resultado em resto_20
resto_20 = resto_50 - notas_20_utilizadas * 20
# fazer a divisão inteira do resto_20 por 10 para saber quantas notas de 10 pode-se usar e armazenar em notas_10_possiveis
notas_10_possiveis = resto_20 // 10
# se notas_10_possiveis maior que notas_10_disponiveis, fazer notas_10_utilizadas igual a notas_10_disponiveis, senão igual a notas_10_possiveis
if notas_10_possiveis > notas_10_disponiveis:
notas_10_utilizadas = notas_10_disponiveis
else:
notas_10_utilizadas = notas_10_possiveis
# calcular o restante do valor fazendo o resto_20 menos notas_10_utilizadas vezes 10 e armazenar este resultado em resto_10
resto_10 = resto_20 - notas_10_utilizadas * 10
# fazer a divisão inteira do resto_10 por 5 para saber quantas notas de 5 pode-se usar e armazenar em notas_5_possiveis
notas_05_possiveis = resto_10 // 5
# se notas_5_possiveis maior que notas_5_disponiveis, então não tem caixa suficiente, senão notas_5_utilizadas igual a notas_5_possiveis
if notas_05_possiveis > notas_05_disponiveis:
print "Não há caixa suficiente para este valor!"
sys.exit(0) # Termina o programa
else:
notas_05_utilizadas = notas_05_possiveis
# calcular o restante do valor fazendo o resto_10 menos notas_5_utilizadas vezes 5 e armazenar este resultado em resto_5
resto_05 = resto_10 - notas_05_utilizadas * 5
#Se resto_5 não for zero, então o valor não é múltiplo de 5 e não pode ser sacado
if resto_05 > 0:
print "Não há notas no caixa para compor este valor!"
sys.exit(0) # Termina o programa
#Agora exibir:
#<notas_50_utilizadas> x 50 + <notas_20_utilizadas> x 20 + <notas_10_utilizadas> x 10 + <notas_05_utilizadas> x 5
print notas_50_utilizadas, 'x 50 +', notas_20_utilizadas, 'x 20 +', notas_10_utilizadas, 'x 10 +', notas_05_utilizadas, 'x 5'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment