consolidate all repos to one for archive
This commit is contained in:
59
semester_2/programiranje_2/naloga1001/README.md
Normal file
59
semester_2/programiranje_2/naloga1001/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
Uporabite in razširite nalogo 5.1 po spodnjih navodilih.
|
||||
|
||||
Razširite nalogo tako, da v glavnem programu podprete spodnje klice metode sort, ki s pomočjo funkcije kot parameter sortira umetnine v galeriji na različne načine:
|
||||
|
||||
gallery.sort(ascendingYear);
|
||||
cout << gallery.toString() << std::endl;
|
||||
gallery.sort(descendingYear);
|
||||
cout << gallery.toString() << std::endl;
|
||||
gallery.sort(ascendingPrice);
|
||||
cout << gallery.toString() << std::endl;
|
||||
|
||||
V ta namen zapišite naslednje:
|
||||
Dodajte metodo sort v razred Gallery:
|
||||
|
||||
void sort(bool (*c)(Artwork*, Artwork*));
|
||||
|
||||
Metoda sort uredi vector artworks v razredu Gallery, tako kot zahteva funkcija, ki jo prejme kot parameter.
|
||||
Za potrebe metode sort implementirajte še:
|
||||
|
||||
bool ascendingYear(Artwork* i, Artwork* j);
|
||||
bool descandingYear(Artwork* i, Artwork* j);
|
||||
bool ascendingPrice(Artwork* i, Artwork* j);
|
||||
|
||||
Funkcije implementirajte zunaj razreda Gallery.
|
||||
|
||||
V glavnem programu podprite naslednjo vrstico kode, ki poišče prvo umetnino, ki je iz renesančnega obdobja.
|
||||
|
||||
cout << gallery.find(isRenaissanceArt)->toString();
|
||||
|
||||
Potrebujemo naslednje:
|
||||
Dodajte metodo find v razred Gallery:
|
||||
|
||||
Artwork* find(bool (*c)(Artwork*));
|
||||
|
||||
Metoda find vrne prvi element vector-ja artworks v razredu Gallery, ki ustreza pogoju. Za implementacijo uporabite funkcijo find_if iz knjižnice algorithms: http://www.cplusplus.com/reference/algorithm/find_if/. Tretji parameter funkcije find_if je parameter metode find (glej zgoraj).
|
||||
|
||||
Za potrebe metode find v glavnem programu implementirajte še:
|
||||
bool isRenaissanceArt(Artwork* a);
|
||||
|
||||
Funkcija preveri, ali je letnica umetnine med 1400 in 1600.
|
||||
|
||||
V glavnem programu podprite naslednji vrstici kode, ki izpiše vse Painting umetnine iz galerije:
|
||||
|
||||
PrintIfPainting paint;
|
||||
gallery.printArtworks(paint);
|
||||
|
||||
Potrebujemo naslednje:
|
||||
Dodajte metodo printArtworks v razred Gallery:
|
||||
|
||||
void printArtworks(PrintIfPainting i);
|
||||
|
||||
Metoda printArtworks izpiše vse umetnine v razredu Gallery, tako kot zahteva funkcijski tip PrintIfPainting, ki jo prejme kot parameter. Za implementacijo uporabite funkcijo for_each iz knjižnice algorithms: http://www.cplusplus.com/reference/algorithm/for_each/. Tretji parameter funkcije for_each je parameter metode printArtworks (glej zgoraj).
|
||||
Za potrebe funkcije for_each implementirajte razred PrintIfPainting ter prekrijte operator:
|
||||
|
||||
void operator()(Artwork* e);
|
||||
|
||||
V zgornji metodi boste potrebovali rezervirano besedo dynamic_cast ( primer: https://en.cppreference.com/w/cpp/language/dynamic_cast).
|
||||
|
||||
V glavnem programu demonstrirajte uporabo kazalcev na funkcije in funkcijske tipe.
|
||||
Reference in New Issue
Block a user