NOMINALY = (5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01)
N = len(NOMINALY)
def WydajReszte(reszta):
i = 0
while reszta > 0 and i < N:
if reszta >= NOMINALY[i]:
print(NOMINALY[i])
reszta = reszta - NOMINALY[i]
else:
i += 1
reszta = float(input("Podaj kwotę reszty: "))
WydajReszte(reszta)
NOMINALY to krotka zawierająca nominały od największego do najmniejszego:
5, 2, 1, 0.50, 0.20, 0.10, 0.05, 0.02, 0.01. Dzięki temu program działa zachłannie
– wydaje najpierw największy możliwy nominał.
N = len(NOMINALY) – zapisuje liczbę nominałów (czyli 9).
Funkcja przyjmuje kwotę reszty, a następnie stara się wydać ją za pomocą dostępnych nominałów.
i = 0 – indeks aktualnego nominału. Zaczyna od największego.
Program działa, dopóki kwota reszty jest większa od zera i nie skończyły się nominały:
while reszta > 0 and i < N.
Jeśli aktualny nominał mieści się w reszcie (reszta >= NOMINALY[i]),
to zostaje „wydany” – wypisany, a reszta pomniejszona.
Jeśli nie, program przechodzi do mniejszego nominału (i += 1).
Dla kwoty 12.37 program wyda kolejno: 5, 5, 2, 0.2, 0.1, 0.05, 0.02.
W praktyce operacje finansowe wykonuje się na groszach (liczbach całkowitych), bo typ float może generować błędy zaokrągleń. Tu jednak program służy do zrozumienia algorytmu.