consolidate all repos to one for archive
This commit is contained in:
29
semester_2/programiranje_2/naloga1002/README.md
Normal file
29
semester_2/programiranje_2/naloga1002/README.md
Normal file
@@ -0,0 +1,29 @@
|
||||
Uporabite in razširite nalogo 10.1 po spodnjih navodilih.
|
||||
|
||||
Vse raw kazalce v kodi zamenjajte z std::shared_ptr (naj bo v kombinaciji z std::make_shared in ne new).
|
||||
|
||||
Pri nalogi 10.1 smo uporabili sledečo notacijo funkcije kot paramenter Artwork* find(bool (*c)(Artwork*));. Od verzije C++11 imamo na voljo std::function, ki omogoča, da lahko podamo funkcijo kot parameter kot objekt.
|
||||
|
||||
Torej na primeru metode find bi nova notacija izgledala takole: Artwork* find(std::function<bool(Artwork*)> c);
|
||||
|
||||
V glavnem programu podprite naslednjo vrstico kode, ki iz vektorja artworks odstrani vse umetnine, ki ustrezajo glede na podano funkcijo.
|
||||
|
||||
cout << "\nBefore filter: \n";
|
||||
cout << gallery.toString();
|
||||
gallery.filterOut(isOlderThan2000);
|
||||
cout << "\nAfter filter: \n";
|
||||
cout << gallery.toString();
|
||||
|
||||
V razredu Gallery dodajte in implementirajte metodo filterOut, ki kot parameter prejme funkcijo (uporabite std::function), ki naj ima izhodni tip bool prejme pa std::shared_ptr<Artwork>. Metoda mora odstraniti umetnine iz artworks, ki ustrezajo glede na podano funkcijo.
|
||||
|
||||
Za potrebe metode filterOut dodajte v glavni program še funkcijo bool isOlderThan2000(std::shared_ptr<Artwork> a), ki vrne true, če je slika starejša od leta 2000, sicer vrne false.
|
||||
|
||||
Namesto, da kot parameter podamo že vnaprej spisano funkcijo (tako kot smo npr. isOlderThan2000), lahko uporabimo tudi lambda izraz . Primer lambda izraza pri nalogi 10.1 bi lahko bil pri sort, namesto podane funkcije ascendingYear:
|
||||
|
||||
gallery.sort([](std::shared_ptr<Artwork> i, std::shared_ptr<Artwork> j){
|
||||
return i->getYear() < j->getYear();
|
||||
});
|
||||
|
||||
V glavnem programu kličete metodo filterOut in podate funkcijo kot parameter v obliki lambda izraza. Napiši na takšen način, da boste odstranili umetnine, ki so cenejše od 100€ (torej ne smete imeti posebej deklarirane funkcije).
|
||||
|
||||
Izmislite in implementirajte smiselni primer za večkratno dedovanje (pri tem ni dovoljena uporaba primera s predavanj).
|
||||
Reference in New Issue
Block a user