I Liceum Ogólnokształcące w Jarosławiu - Informatyka

Wydawanie reszty metodą zachłanną

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)
        

1. Lista nominałów

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ł.

2. Zmienna N

N = len(NOMINALY) – zapisuje liczbę nominałów (czyli 9).

3. Funkcja WydajReszte(reszta)

Funkcja przyjmuje kwotę reszty, a następnie stara się wydać ją za pomocą dostępnych nominałów.

4. Zmienna i

i = 0 – indeks aktualnego nominału. Zaczyna od największego.

5. Pętla while

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.

6. Warunek if

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).

7. Przykład działania

Dla kwoty 12.37 program wyda kolejno: 5, 5, 2, 0.2, 0.1, 0.05, 0.02.

8. Uwaga float!

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.