Page 9 - Informatyka na czasie. Podejście zachłanne w rozwiązywaniu problemów. Podręcznik klasa 3
P. 9
4. Podejście zachłanne w rozwiązywaniu problemów
Specyfikacja Dobra rada
Zawsze dokładnie czytaj
Dane: kwota reszty do wydania w postaci dwóch liczby całkowitych: specyfikację problemu.
liczba złotych z przedziału [0; 9] i liczba groszy z przedziału [0; 99]; Często narzuca ona typ
tablica NOMINALY z informacją o dostępnych nominałach – liczby danych, który należy
zastosować w programie.
całko wite (wielokrotności 1 grosza) uporządkowane malejąco.
Wynik: kolejne wartości nominałów potrzebnych do wydania reszty
podane w złotówkach.
Oto fragment kodu źródłowego programu Wydawanie reszty 2:
Fragment kodu
1. const int N = 9; źródłowego programu
2. const int NOMINALY[N] = {500, 200, 100, 50, 20, 10, 5, Wydawanie reszty 2
3. 2, 1};
4.
5. void WydajReszte(int reszta) Dobra rada
6. { Zauważ, że po zmianie
7. int i = 0; typu danych w tablicy
8. while (reszta>0) NOMINALY zmienił się
również nagłówek funkcji
9. { WydajReszte.
10. if (reszta >= NOMINALY[i])
11. {
12. cout << NOMINALY[i]/100.0 << endl;
13. reszta = reszta - NOMINALY[i];
14. }
15. else i++;
16. }
17. }
18.
19. int main()
20. {
21. int reszta_zlote, reszta_grosze;
22. cout << "Podaj liczbe zlotych reszty: ";
23. cin >> reszta_zlote;
24. cout << "Podaj liczbe groszy reszty: ";
25. cin >> reszta_grosze;
26. WydajReszte(reszta_zlote*100 + reszta_grosze); Dobra rada
27. return 0; Zauważ, że warunek
28. } pętli while (wiersz 8)
jest uproszczony. Nie
musisz się martwić
W liniach 22–25 pobieramy wartość kwoty do wydania – oddzielnie o przekroczenie indeksów
złotówki i grosze. Takie rozwiązanie pozwala łatwo przeliczyć złotówki w tablicy NOMINALY,
na grosze. Funkcję WydajReszte wywołujemy dla parametru wyrażonego ponieważ funkcja
WydajReszte operuje tylko
w groszach (linia 26) – w tym celu trzeba przeliczyć złotówki na grosze. na liczbach całkowitych.
69