Institute of Computer Science
  1. Courses
  2. 2022/23 spring
  3. Programming in C++ (LTAT.03.025)
ET
Log in

Programming in C++ 2022/23 spring

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Funktsioonimallid, failitöötlus
  • 5. OOP I Klassid
  • 6. OOP II Pärilus ja polümorfism
  • 7. Kontrolltöö 1?

Seitsmendal nädalal toimub 1. kontrolltöö

7.1 1. kontrolltöö näide?
  • 9. Dünaamiline mäluhaldus II
  • 10. Klassimallid
  • 11. STL andmestruktuurid I
  • 12. STL andmestruktuurid II
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
14 Täiendavad teemad
14.1 Kodutöö
14.2 Harjutused
14.3 Videolingid
  • 15. Kontrolltöö 2?

Viieteistkümnendal nädalal toimub 2. kontrolltöö

15.1 2. kontrolltöö näide?
  • 16. Projekti esitlus?
  • Viiteid
  • Vanad materjalid
  • Praktikumid
  • Juhendid
  • Viited

Harjutusülesanded enne kontrolltööd nr. 2

1. Klassimall objektide hoidmiseks

Koosta klassimall, mis hoiab andmestruktuuris (valida ise) mingi teise klassi objekte (parameetriks on klassi nimi). Klassimallis peavad olema järgmised funktsionaalsused:

  • konstruktor, mis loob andmestruktuuri malli tüüpi objektide jaoks
  • destruktor, kus andmestruktuur hävitatakse
  • liikmefunktsioon objekti lisamiseks andmestruktuuri
  • liikmefunktsioon, mis tagastab objekti indeksi järgi
  • liikmefunktsioon, mis tagastab objekti indeksi etteantud objekti järgi
  • liikmefunktsioon objektide kuvamiseks ekraanile

Näidiseks koosta klass Teos, mis hoiab teose pealkirja ja autorit. Lisa vajalikud liikmefunktsioonid. Katseta ka teiste isetehtud klassidega.

2. Raamatukogu

Raamatukogus on vaja raamatuid klassifitseerida sarjade järgi (nt Ajavaim, Aken maailma, Eesti mälu, Väike ajalugu jne).

Koosta klass Raamat, kus on privaatsed isendiväljad pealkirja, autori ja sarja jaoks (kõik string tüüpi). Klassis peavad olema liikmefunktsioonid sarja muutmiseks ja raamatu kuvamiseks ekraanile. Koosta klass Sari, kus on privaatsed isendiväljad sarja nime ja raamatute vektori jaoks. Klassis on liikmefunktsioonid

  • raamatu lisamiseks
  • raamatu kustutamiseks
  • sarja raamatute ekraanile kuvamiseks

Koosta klass Sarjad, kus hoitakse kõikidesse sarjadesse kuuluvate raamatute infot kujul map<sarja_nimi, *viit sarja raamatute vektorile>. Klassis peavad olema järgmised liikmefunktsioonid:

  • raamatu lisamine (kui raamatul puudub sari, siis ei lisata)
  • raamatu sarja muutmine
  • raamatu kustutamine
  • sarja lisamine (ette viit Sari isendile)
  • sarja kustutamine
  • sarja raamatute kuvamine ekraanile

Kasutada võimalusel tarku viitasid (smart pointers). Testi oma klasse.

Raamatute näidiseid (koos ilmumisaastaga) leiad siit:

Roberto Bolano. Metsikud detektiivid, Ajavaim, 2013 
Jaan Kross. Kallid kaasteelised, Eesti mälu, 2003
Steve Parker. Dinosaurused ja nende maailm, Aken maailma,1998
Julio Cortazar. Salarelvad, Ajavaim, 2011
David Burnie. Linnud ja nende maailm, Aken maailma, 1997
Mari Möldre. Eesriie avaneb, Eesti mälu, 2010

3. Andmete lugemine koos erinditöötlusega

Koosta funktsioon, mis loeb etteantud failist andmeid ja teeb nendega arvutusi. Andmed on failis tühikuga eraldatult, igal real peab olema sama palju arve (tüübiks võib olla float). Funktsioon tagastab viite sõnastikule, kus võtmeks on rea number ja väärtuseks reas olevate arvude aritmeetiline keskmine. Funktsioon peaks hakkama saama järgmiste erinditega:

  • faili ei leitud

Kui sisendfaili ei ole olemas, peaks funktsioon väljastama runtime_error erindi koos sobiva veateatega.

  • kehtetu sisend

Kui failis olevate andmete seas on mittearve (st pole võimalik arvuks teisendada), siis peaks funktsioon viskama erindi 'vigase arvu erind' koos sobiva veateatega.

  • reas on eelnevatest erinev arv arve

Kui reas on eelnevate ridadega võrreldes erinev arv arve, siis visata erind 'vigane rida' koos rea sisuga ja jätta see rida töötlemata.

Funktsioonis main kuva iga rea kohta rea number ja rea keskmine.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment