Zdefiniuj funkcję zachlanneWydawanieReszty(), która dla reszty resztaDoWydania obliczy liczbę nominałów użytych do jej wydania. Dostępne nominały zapisane są w tablicach zloteNominaly, groszeNominaly. Nominały z tablicy groszeNominaly mają posłużyć do wydania reszty po przecinku. Przetestuj swój program dla następujących danych wejściowych:
zloteNominaly – tablica liczb naturalnych zawierająca posortowany malejąco zbiór nominałów; nominały z tej tablicy powinny posłużyć do wydania całkowitej części reszty resztaDoWydania
groszeNominaly – tablica liczb naturalnych zawierająca posortowany malejąco zbiór nominałów; nominały z tej tablicy powinny posłużyć do wydania rzeczywistej części reszty resztaDoWydania
resztaDoWydania - liczba rzeczywista; kwota do wydania
Wynik:
minimalna liczba nominałów, jakich należy użyć do wydania reszty
Przykładowe wyjście dla podanych danych:
Linia 1. Liczba nominalow uzytych do wydania reszty 77 kropka 99 dwukropek 10.
RVs5VdPSWhQTk
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. int zachlanneWydawanieReszty otwórz nawias okrągły double resztaDoWydania przecinek int zloteNominaly otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int liczbaZlote przecinek int groszeNominaly otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int liczbaGrosze zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. int resztaZlote znak równości otwórz nawias okrągły int zamknij nawias okrągły resztaDoWydania średnik prawy ukośnik prawy ukośnik reszta bez groszy.
Linia 7. int resztaGrosze średnik.
Linia 8. resztaDoWydania znak równości resztaDoWydania asterysk 1000 średnik prawy ukośnik prawy ukośnik wymnażamy liczę razy 1000 przecinek aby osiągnąć precyzję do 2 miejsc po przecinku.
Linia 9. resztaGrosze znak równości otwórz nawias okrągły int zamknij nawias okrągły resztaDoWydania średnik.
Linia 10. resztaGrosze znak równości resztaGrosze prawy ukośnik 10 średnik prawy ukośnik prawy ukośnik usunięcie 0 z końca.
Linia 11. resztaGrosze znak równości resztaGrosze procent 100 średnik prawy ukośnik prawy ukośnik pozostawienie 2 ostatnich cyfr średnik liczby groszy.
Linia 12. int wynik znak równości 0 średnik.
Linia 14. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaZlote średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik wydanie reszty w zlotówkach.
Linia 15. while otwórz nawias okrągły resztaZlote minus zloteNominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. wynik znak równości wynik plus 1 średnik.
Linia 17. resztaZlote znak równości resztaZlote minus zloteNominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 18. zamknij nawias klamrowy.
Linia 19. zamknij nawias klamrowy.
Linia 21. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaGrosze średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy prawy ukośnik prawy ukośnik wydanie reszty w groszach.
Linia 22. while otwórz nawias okrągły resztaGrosze minus groszeNominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. wynik znak równości wynik plus 1 średnik.
Linia 24. resztaGrosze znak równości resztaGrosze minus groszeNominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 25. zamknij nawias klamrowy.
Linia 26. zamknij nawias klamrowy.
Linia 28. return wynik średnik.
Linia 29. zamknij nawias klamrowy.
Linia 31. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 32. int zloteNominaly otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 500 przecinek 200 przecinek 100 przecinek 50 przecinek 20 przecinek 10 przecinek 5 przecinek 2 przecinek 1 zamknij nawias klamrowy średnik.
Linia 33. int groszeNominaly otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 50 przecinek 20 przecinek 10 przecinek 5 przecinek 2 przecinek 1 zamknij nawias klamrowy średnik.
Linia 34. int liczbaZlote znak równości sizeof otwórz nawias okrągły zloteNominaly zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły zloteNominaly otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 35. int liczbaGrosze znak równości sizeof otwórz nawias okrągły groszeNominaly zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły groszeNominaly otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 37. double resztaDoWydania znak równości 77 kropka 99 średnik.
Linia 39. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Liczba nominalow uzytych do wydania reszty cudzysłów średnik.
Linia 40. cout otwórz nawias ostrokątny otwórz nawias ostrokątny resztaDoWydania otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów dwukropek cudzysłów średnik.
Linia 41. cout otwórz nawias ostrokątny otwórz nawias ostrokątny zachlanneWydawanieReszty otwórz nawias okrągły resztaDoWydania przecinek zloteNominaly przecinek liczbaZlote przecinek groszeNominaly przecinek liczbaGrosze zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 43. return 0 średnik.
Linia 44. zamknij nawias klamrowy.
31
Ćwiczenie 6
Zdefiniuj funkcję zachlanneWydawanieReszty(), która dla każdej z reszt w tablicy resztyDoWydania obliczy, ile razy do jej wydania został użyty każdy z nominałów z tablicy nominaly. Przetestuj swój program dla następujących danych wejściowych:
nominaly = { 50, 20, 10, 5, 2, 1 }
resztyDoWydania = { 234, 784, 129 }
Specyfikacja:
Dane:
nominaly – tablica liczb naturalnych; zawierająca posortowany malejąco zbiór nominałów
resztyDoWydania – tablica liczb naturalnych; zawierająca reszty do wydania
Wynik:
liczba nominałów wykorzystanych do wydania reszty
Przykładowe wyjście dla podanych danych:
Linia 1. Reszta do wydania dwukropek 234 kropka Liczba użytych w sumie banknotów i monet dwukropek 8.
Linia 2. Nominal 50 dwukropek 4.
Linia 3. Nominal 20 dwukropek 1.
Linia 4. Nominal 10 dwukropek 1.
Linia 5. Nominal 5 dwukropek 0.
Linia 6. Nominal 2 dwukropek 2.
Linia 7. Nominal 1 dwukropek 0.
Linia 8. Reszta do wydania dwukropek 784 kropka Liczba użytych w sumie banknotów i monet dwukropek 19.
Linia 9. Nominal 50 dwukropek 15.
Linia 10. Nominal 20 dwukropek 1.
Linia 11. Nominal 10 dwukropek 1.
Linia 12. Nominal 5 dwukropek 0.
Linia 13. Nominal 2 dwukropek 2.
Linia 14. Nominal 1 dwukropek 0.
Linia 15. Reszta do wydania dwukropek 129 kropka Liczba użytych w sumie banknotów i monet dwukropek 6.
Linia 16. Nominal 50 dwukropek 2.
Linia 17. Nominal 20 dwukropek 1.
Linia 18. Nominal 10 dwukropek 0.
Linia 19. Nominal 5 dwukropek 1.
Linia 20. Nominal 2 dwukropek 2.
Linia 21. Nominal 1 dwukropek 0.
RCavI8W2nu8ch
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. void zachlanneWydawanieReszty otwórz nawias okrągły int resztyDoWydania otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int nominaly otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int liczbaNominalow przecinek int liczbaReszt przecinek int asterysk asterysk ileRazyUzyte zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaReszt średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. int resztaDoWydania znak równości resztyDoWydania otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 8. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczbaNominalow średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy znak równości resztaDoWydania prawy ukośnik nominaly otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 10. resztaDoWydania znak równości resztaDoWydania minus ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy asterysk nominaly otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Linia 15. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. int nominaly otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 50 przecinek 20 przecinek 10 przecinek 5 przecinek 2 przecinek 1 zamknij nawias klamrowy średnik.
Linia 17. int resztyDoWydania otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 234 przecinek 784 przecinek 129 zamknij nawias klamrowy średnik.
Linia 19. int liczbaNominalow znak równości sizeof otwórz nawias okrągły nominaly zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły nominaly otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 20. int liczbaReszt znak równości sizeof otwórz nawias okrągły resztyDoWydania zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły resztyDoWydania otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 22. int asterysk asterysk ileRazyUzyte średnik.
Linia 23. ileRazyUzyte znak równości new int asterysk otwórz nawias kwadratowy liczbaReszt zamknij nawias kwadratowy średnik.
Linia 24. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaReszt średnik i plus plus zamknij nawias okrągły.
Linia 25. ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości new int otwórz nawias kwadratowy liczbaNominalow zamknij nawias kwadratowy średnik.
Linia 27. zachlanneWydawanieReszty otwórz nawias okrągły resztyDoWydania przecinek nominaly przecinek liczbaNominalow przecinek liczbaReszt przecinek ileRazyUzyte zamknij nawias okrągły średnik.
Linia 29. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaReszt średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 30. int k znak równości 0 średnik.
Linia 31. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczbaNominalow średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 32. k plus znak równości ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy średnik.
Linia 33. zamknij nawias klamrowy.
Linia 34. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Reszta do wydania dwukropek cudzysłów średnik.
Linia 35. cout otwórz nawias ostrokątny otwórz nawias ostrokątny resztyDoWydania otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów kropka Liczba użytych w sumie banknotów i monet dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny k otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 37. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczbaNominalow średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 38. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Nominal cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny nominaly otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 39. zamknij nawias klamrowy.
Linia 40. zamknij nawias klamrowy.
Linia 42. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaReszt średnik i plus plus zamknij nawias okrągły.
Linia 43. delete otwórz nawias kwadratowy zamknij nawias kwadratowy ileRazyUzyte otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 44. delete otwórz nawias kwadratowy zamknij nawias kwadratowy ileRazyUzyte średnik.
Linia 46. return 0 średnik.
Linia 47. zamknij nawias klamrowy.
31
Ćwiczenie 7
Zdefiniuj funkcję zachlanneWydawanieReszty(), która dla każdej z reszt w tablicy resztyDoWydania sprawdzi, czy jest możliwe wydanie jej za pomocą nominałów z tablicy nominaly. Przetestuj swój program dla następujących danych wejściowych:
nominaly = { 9, 8, 7, 6 }
resztyDoWydania = { 957, 9999, 2436, 5717, 13 }
Specyfikacja:
Dane:
nominaly – tablica liczb naturalnych zawierająca posortowany malejąco zbiór nominałów
resztyDoWydania - tablica liczb naturalnych zawierająca reszty do wydania
Wynik:
komunikat informujący, czy dana reszta może bądź nie może zostać wydana podanymi nominałami
Przykładowe wyjście dla podanych danych:
Linia 1. Reszta 957 nie moze zostac wydana nominalami 9 8 7 6.
Linia 2. Reszta 9999 moze zostac wydana nominalami 9 8 7 6.
Linia 3. Reszta 2436 moze zostac wydana nominalami 9 8 7 6.
Linia 4. Reszta 5717 nie moze zostac wydana nominalami 9 8 7 6.
Linia 5. Reszta 13 nie moze zostac wydana nominalami 9 8 7 6.
RbMwETwgZjwaN
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. using namespace std średnik.
Linia 5. bool zachlanneWydawanieReszty otwórz nawias okrągły int resztaDoWydania przecinek int nominaly otwórz nawias kwadratowy zamknij nawias kwadratowy przecinek int liczbaNominalow zamknij nawias okrągły otwórz nawias klamrowy.
Linia 7. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaNominalow średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. int k znak równości resztaDoWydania prawy ukośnik nominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 9. resztaDoWydania znak równości resztaDoWydania minus k asterysk nominaly otwórz nawias kwadratowy i zamknij nawias kwadratowy średnik.
Linia 10. zamknij nawias klamrowy.
Linia 12. return resztaDoWydania znak równości znak równości 0 średnik.
Linia 13. zamknij nawias klamrowy.
Linia 15. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. int nominaly otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 9 przecinek 8 przecinek 7 przecinek 6 zamknij nawias klamrowy średnik.
Linia 17. int resztyDoWydania otwórz nawias kwadratowy zamknij nawias kwadratowy znak równości otwórz nawias klamrowy 957 przecinek 9999 przecinek 2436 przecinek 5717 przecinek 13 zamknij nawias klamrowy średnik.
Linia 19. int liczbaNominalow znak równości sizeof otwórz nawias okrągły nominaly zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły nominaly otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 20. int liczbaReszt znak równości sizeof otwórz nawias okrągły resztyDoWydania zamknij nawias okrągły prawy ukośnik sizeof otwórz nawias okrągły resztyDoWydania otwórz nawias kwadratowy 0 zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 22. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaReszt średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Reszta cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny resztyDoWydania otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów cudzysłów średnik.
Linia 25. if otwórz nawias okrągły wykrzyknik zachlanneWydawanieReszty otwórz nawias okrągły resztyDoWydania otwórz nawias kwadratowy i zamknij nawias kwadratowy przecinek nominaly przecinek liczbaNominalow zamknij nawias okrągły zamknij nawias okrągły.
Linia 26. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów nie cudzysłów średnik.
Linia 28. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów moze zostac wydana nominalami lewy ukośnik t cudzysłów średnik.
Linia 30. for otwórz nawias okrągły int j znak równości 0 średnik j otwórz nawias ostrokątny liczbaNominalow średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 31. cout otwórz nawias ostrokątny otwórz nawias ostrokątny nominaly otwórz nawias kwadratowy j zamknij nawias kwadratowy otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów cudzysłów średnik.
Linia 32. zamknij nawias klamrowy.
Linia 34. cout otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik.
Linia 35. zamknij nawias klamrowy.
Linia 37. return 0 średnik.
Linia 38. zamknij nawias klamrowy.