Skip to content

Latest commit

 

History

History
74 lines (49 loc) · 2.24 KB

File metadata and controls

74 lines (49 loc) · 2.24 KB

Programming-course-cpp

Jakub Piskorowski on 14/04/2022 wersja: 1.0

Temat: Algorytm wydawania reszty

Przedstawienie działania algorytmu wydawania reszty

Kod źródłowy: wydawanie-reszty.cpp

📒 Poziom 1

Powrót do Inne algorytmy


Objaśnienie

Wydawanie reszty

Problem: Jak dostępnymi monetami wydać resztę w taki sposób, by użyć ich jak najmniej. Jakie będzie rozwiązanie dla reszty 6, a jakie dla 13?

Monety

Reszta

Widać zatem, że powinniśmy rozpocząć wydawanie reszty od najwyższych nominałów.

Nasz algorytm przyjmie liczbę, która będzie oznaczała resztę, którą mamy wydać klientowi. Przy pomocy algorytmu wyznaczymy ile jakich nominałów użyć, aby wydać jak najmniej banknotów i monet. W celu ułatwienia sobie zadania przyjmujemy, że kwota do wydania jest podana w złotówkach. Listą wartości odpowiednich nominałów będziemy przechowywać na liście uporządkowanej malejąco.


Algorytm wydawania reszty

Wejście:
kwota - kwota do wydania w banknotach

Wyjście:
nominaly[] - nominaly do wydania

Zmienne pomocnicze:
ile - ile razy wydać dany nominał
i - rozpatrywanie kolejnych nominałów

Lista kroków:

K1:   nominaly[] ← 500, 200, 100, 50, 20, 10, 5, 2, 1   określenie dostępnych nominałów
K2:   Dopóki kwota > 0   dopóki nie wydano całej reszty
      wykonuj kroki od K3 do K7
k3:   Jeśli kwota >= nominaly[]   sprawdz czy można wydać danym nominałem
      wykonuj kroki od K4 do K6
K4:   ile ← kwota / nominaly[]   ile razy wydać dany nominał
K5:   kwota ← kwota - ( nominaly[] * ile )   zmniejsz resztę o dany nominał
K6:   Pisz nominaly oraz ile   wypisz nominał i ile razy
K7:   i ← i + 1   rozpatrz kolejny nominał
K8:   Zakończ

Wynik:

Podaj reszte do wyplacenia: 349
200 x 1
100 x 1
20 x 2
5 x 1
2 x 2

Kod źródłowy: wydawanie-reszty.cpp