Kirjoita ohjelma, joka kysyy käyttäjältä nimi, ikä -pareja (esim. ihmisten nimiä ja ikiä) ja tallentaa ne valitsemaasi tietorakenteeseen. Minkä tietorakenteen valitset ja miksi? Käyttäjä syöttää tiedot näppäimistöltä. Kuinka toteutat syötteiden lukemisen lopettamisen? Kun käyttäjä on syöttänyt haluamansa määrän tietoja (0..n paria; voit olettaa, että n < INT_MAX), ohjelma tulostaa näytölle vanhimman henkilön nimen ja iän sekä syötettyjen ikien keskiarvon. (15 p) Kuinka käsittelet sellaiset tilanteet, jossa käyttäjän antama syöte ei ole kelvollinen? (3 p) Esittele luokka, jossa säilytetään tietoja lemmikkieläimistä. Lemmikeistä tallennetaan nimi, laji (esim. kissa, koira, kanarialintu) sekä syntymävuosi. Toteuta luokkaan ainakin muodostin sekä olion tiedot näytölle tulostava funktio. Mitkä luokan jäsenet määrittelet julkisiksi, mitkä yksityisiksi? Perustele. (5 p) Määrittele myös luokka koira, joka perii lemmikkiluokan; koirasta tallennetaan lemmikin tietojen lisäksi rotu (esim. belgianpaimenkoira). Kuinka toteutat koiraluokan olion näytölle tulostavan funktion? (5 p) Kirjoita myös pieni ohjelma, jossa testaat luokkien toimintaa (testaa ainakin olion muodostamista ja tulostamista näytölle). (2 p) Kirjoita edellisten tehtävien lemmikkieläinluokkaa käyttävä ohjelma, jossa luetaan tekstitiedostosta lemmikkien tietoja ja tallennetaan ne sopivaan tietorakenteeseen. Minkä tietorakenteen valitset ja miksi? Palauta sekä käyttämäsi tekstitiedosto että ohjelmakoodi. (5 p) Lajittele tietorakenteesa olevat lemmikkioliot aakkosjärjestykseen nimen perusteella ja tulosta lajitellun tietorakenteen sisältö näytölle. (3 p) Kirjoita malliluokka (template class), jonka olioissa säilytetään kolmea samantyyppistä alkiota. (2 p) Kirjoita lisäksi neljä mallifunktiota (template functions), joista ensimmäinen täyttää luokan olion (joko kysyy tiedot käyttäjältä tai lukee ne tekstitiedostosta), toinen tulostaa luokan olion jäsenten arvot näytölle, kolmas laskee alkioiden summan ja palauttaa sen (voit olettaa, että alkioille on määritelty yhteenlasku) ja neljäs laskee yhteen kahden olion alkioittaisen summan ja palauttaa tuloksena syntyvän uuden olion tätä funktiota kutsuneelle ohjelmalle (miten toteutat palautuksen?). (10 p) (Alkioittainen summa: s[i] = a[i] + b[i], missä indeksi i saa arvot 0..2, s on summaolio, a ja b ovat summattavat oliot.)