1. Korisnik unosi cele brojeve sve dok ne unese broj 0. Npr. 4 5 6 3 2 5 76 3 -3 0 a) Nulti broj staviti na pocetak vektora, prvi na kraj, drugi na pocetak itd. Nakon ucitavanja vektora izracunati sumu svih neparnih elemenata. b) Svaki broj stavljati redom na kraj liste celih brojeva. Na kraju ispisati svaki 3 element liste pocev od nultog. 2. Napisati sablon funkciju za ucitavanje u vektor proizvoljnog tipa podataka. 3. Napisati sablon klasu Par koja ima dva elementa proizvoljnih tipova. Redefenisati << operator za klasu Par tako da ispisuje u formatu "(a,b)". Nakon toga implementirati sablon funkciju koja prihvata dva vektora proizvoljnih tipova i kao povratnu vrednost vraca vektor objekata klase Par tako da je i-ti par u vektoru sacinjen od i-tog elementa prvog i drugog ulaznog vektora. Vektori se ucitavaju sa ulaza dok se ne ucita 0. 1 2 4 2 5 0 2.3 4 5.6 3.3 2.1 454.4 0 >(1,2.3) (2,4) (4,5.6) (2,3.3) (5,2.1) 4. Napraviti sablon funkciju koja je ista kao prethodna s tim sto se moze primeniti nad bilo kojom kolekcijom, odnossno nad bilo cim sto ima iterator. 5. Napisati sablon funkciju koja menja prosledjenu kolekciju (vektor, listu...) tako sto primenjuje nad svakim elementom kolekcije unarnu transformaciju. Potpis metode bi trebao da izgleda ovako nekako: template void mapiraj(Kol &kol, Predikat f); Npr. ako bi se pozvalo sa: mapiraj,int (int)>(v1,f1) gde je v1 vektor celih brojeva: 3 6 6 4 -32 5 32 a f1 definisana kao: int f1(int x){ return x+1; } izmenjena kolekcija bi izgledala ovako: 4 7 7 5 -31 6 32 6. Definisati sablonski funkcional pod nazivom Linear koji pri kreiranju prihvata dva argumenta a i b koji su realne vrednosti (float). Potom kreirati nekoliko takvih funkcionala sa razlicitim vrednostima i primeniti ih nad vektorom kroz funkciju mapiranja iz prethodnog zadatka. Operator () u funkcionalu je definisan tako da za unarni argument x racuna a*x+b: T operator()(T x){ return x*a+b; } Testirati nad tipovima za koje je dobro definisana operacija mnozenja i sabiranja sa tipom float.