Ćwiczenie 0

Zaopatrzeniowiec dostaje listę zakupów. Martwi się, aby nie przekroczyć dopuszczalnego udźwigu po załadowaniu samochodu. Zdefiniuj funkcję zakupy(int c, int m, int z), której parametrami są liczby worków c – cukru, m – mąki i z – ziemniaków. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Udźwig samochodu wynosi 500 kg. Wynikiem funkcji jest 1, gdy samochód może przewieźć zakupy, lub 0, gdy zostanie przekroczony udźwig. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(4, 9, 12) jest 1.
  • Wynikiem funkcji zakupy(12, 34, 43) jest 0.

Wskazówka
Należy znaleźć łączną wagę produktów, a potem porównać wynik z 500. Łączną wagę produktów obliczamy, mnożąc liczbę worków przez ich masy, potem poszczególne liczby dodajemy do siebie

#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int c, int m, int z) { } int main() { // sprawdź działanie funkcji cout << zakupy(4, 9, 12) << " " << zakupy(12, 34, 43) << endl;     return 0; }
Wynikiem funkcji zakupy(4, 9, 38) jest 0
return zakupy(4, 9, 38)==0;
0
zakupy(4, 9, 38)
Wynikiem funkcji zakupy(5, 9, 37) jest 1
return zakupy(5, 9, 37)==1;
1
zakupy(5, 9, 37)
Wynikiem funkcji zakupy(6, 9, 37) jest 0
return zakupy(6, 9, 37)==0;
0
zakupy(6, 9, 37)
Rozwiąż ćwiczenie

Ćwiczenie 1Trzy monety

Dysponujesz nieograniczoną liczbą monet o nominałach 5, 3 i 1 i masz wydać resztę przy użyciu minimalnej liczby monet. Zdefiniuj funkcję trzy(int kwota), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji trzy(11) jest 3.
  • Wynikiem funkcji trzy(99) jest 21.
#include <iostream> using namespace std; // zdefiniuj funkcję int trzy(int kwota) { } int main() { // sprawdź działanie funkcji cout << trzy(11) << " " << trzy(99) << endl;     return 0; }
Wynikiem funkcji trzy(1) jest 1
return trzy(1)==1;
1
trzy(1)
Wynikiem funkcji trzy(22) jest 6
return trzy(22)==6;
6
trzy(22)
Wynikiem funkcji trzy(35) jest 7
return trzy(35)==7;
7
trzy(35)
Rozwiąż ćwiczenie

Ćwiczenie 2Wiele monet

Dysponujesz nieograniczoną liczbą monet o nominałach 20, 10, 5, 2 i 1 i masz wydać resztę przy użyciu minimalnej ich liczby. Zdefiniuj funkcję wiele(int kwota), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów. 

  • Wynikiem funkcji wiele(11) jest 2.
  • Wynikiem funkcji wiele(99) jest 8.
#include <iostream> using namespace std; // zdefiniuj funkcję int wiele(int kwota) { } int main() { // sprawdź działanie funkcji cout << wiele(11) << " " << wiele(99) << endl;     return 0; }
Wynikiem funkcji wiele(1) jest 1
return wiele(1)==1;
1
wiele(1)
Wynikiem funkcji wiele(22) jest 2
return wiele(22)==2;
2
wiele(22)
Wynikiem funkcji wiele(35) jest 3
return wiele(35)==3;
3
wiele(35)
Rozwiąż ćwiczenie

Ćwiczenie 3Ograniczona liczba monet

Dysponujesz podaną liczbą monet o nominałach 20, 10, 5, 2 i 1. Należy wydać resztę przy użyciu minimalnej ich liczby. Zdefiniuj funkcję monety(int kwota, int sztuki), której wynikiem będzie minimalna liczba monet potrzebnych do wydania kwoty podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji monety(11, 100) jest 2.
  • Wynikiem funkcji monety(99, 3) jest 9.
#include <iostream> using namespace std; // zdefiniuj funkcję int monety(int kwota, int sztuki) { } int main() { // sprawdź działanie funkcji cout << monety(11, 100) << " " << monety(99, 3) << endl;     return 0; }
Wynikiem funkcji monety(12, 90) jest 2
return monety(12, 90)==2;
2
monety(12, 90)
Wynikiem funkcji monety(109, 5) jest 8
return monety(109, 5)==8;
8
monety(109, 5)
Wynikiem funkcji monety(19, 7) jest 4
return monety(19, 7)==4;
4
monety(19, 7)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Zaopatrzeniowiec ma kupić cukier, mąkę i ziemniaki. Chce załadować jak najwięcej do samochodu, ale tak, by nie przekroczyć jego udźwigu wynoszącego x kg i przewieźć jak najmniejszą liczbę opakowań. Zdefiniuj funkcję zakupy(int x), której parametrem jest udźwig, a wynikiem – łączna liczba opakowań towarów. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(127) jest 12.
  • Wynikiem funkcji zakupy(100) jest 10.
#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int x) { } int main() { // sprawdź działanie funkcji cout << zakupy(127) << " " << zakupy(100) << endl;     return 0; }
Wynikiem funkcji zakupy(23) jest 3
return zakupy(23)==3;
3
zakupy(23)
Wynikiem funkcji zakupy(129) jest 13
return zakupy(129)==13;
13
zakupy(129)
Wynikiem funkcji zakupy(2) jest 1
return zakupy(2)==1;
1
zakupy(2)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 2

Zaopatrzeniowiec ma kupić cukier, mąkę i ziemniaki. Chce załadować jak najwięcej do samochodu, ale tak, by nie przekroczyć jego udźwigu wynoszącego x kg i przewieźć jak najmniejszą liczbę opakowań. Dodatkowo nie może kupić więcej niż ile opakowań jednego towaru. Zdefiniuj funkcję zakupy(int x, int ile), której parametrami są udźwig i maksymalna liczba opakowań jednego towaru, a wynikiem jest łączna liczba opakowań towarów. Worki cukru ważą 2 kg, mąki 5 kg i ziemniaków 12 kg. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji zakupy(127, 9) jest 14.
  • Wynikiem funkcji zakupy(127, 12) jest 12.
#include <iostream> using namespace std; // zdefiniuj funkcję int zakupy(int x, int ile) { } int main() { // sprawdź działanie funkcji cout << zakupy(127, 9) << " " << zakupy(127, 12) << endl;     return 0; }
Wynikiem funkcji zakupy(23, 5) jest 3
return zakupy(23, 5)==3;
3
zakupy(23, 5)
Wynikiem funkcji zakupy(29, 3) jest 3
return zakupy(29, 3)==3;
3
zakupy(29, 3)
Wynikiem funkcji zakupy(2, 5) jest 1
return zakupy(2, 5)==1;
1
zakupy(2, 5)
Rozwiąż ćwiczenie

Pytania quizoweMetoda zachłanna i dynamiczna

Twój wynik to: /3
  • Na czym polega w algorytmice podejście zachłanne? Dokończ zdanie tak, aby było prawdziwe.

    W celu wyznaczenia rozwiązania w każdym kroku…

  • Czy dla każdego typu problemów algorytmy zachłanne dają optymalne rozwiązanie?
  • Na czym polega dynamiczne podejście do rozwiązania?