Page 7 - Informatyka na czasie. Podejście zachłanne w rozwiązywaniu problemów. Podręcznik klasa 3
P. 7
4. Podejście zachłanne w rozwiązywaniu problemów
Fragment kodu
1. const int N = 9; źródłowego programu
2. const float NOMINALY[N] = {5, 2, 1, 0.50, 0.20, 0.10, Wydawanie reszty
3. 0.05, 0.02, 0.01};
4.
5. void WydajReszte(float reszta)
6. {
7. int i = 0;
8. while (reszta>0 && i<N)
9. {
10. if (reszta >= NOMINALY[i])
11. {
12. cout << NOMINALY[i] << endl;
13. reszta = reszta - NOMINALY[i];
14. }
15. else i++;
16. }
17. }
W linii 1 zdefiniowaliśmy stałą N, która określa liczbę nominałów,
a w liniach 2–3 stałą tablicową o nazwie NOMINALY, wypełnioną war- Stała tablicowa
tościami nominałów. Słowo const przed typem i nazwą tablicy ozna-
cza, że zawartość tablicy nie może się zmienić w trakcie wykonywania
programu.
W liniach 5–17 jest zapisana funkcja WydajReszte typu void, któ- Funkcja niezwracająca
rej zadaniem jest wyznaczanie i wypisywanie na ekranie kolejnych wartości (typu void),
nominałów potrzebnych do wydania reszty. Monet któregoś nomina- s. 248
łu w wydawanej reszcie może nie być wcale, a monet innego nominału
może być kilka. Dlatego też przed przejściem do kolejnego nominału
(linia 15) sprawdza się warunek z linii 10.
Rysunek 4.3 przedstawia przykładowe wywołanie programu
Wydawanie reszty.
Rys. 4.3. Wywołanie programu wydawanie_reszty.exe dla kwoty 4 zł 78 gr
Ćwiczenie 4
W pliku wydawanie_reszty.cpp zapisz pełen kod źródłowy programu
i skompiluj go. Sprawdź działanie programu dla różnych wartości
reszty, w tym dla 7.30, 7.79 i 7.85.
67