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

Programming in C++ 2024/25 spring

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
  • 6. Dünaamiline mäluhaldus II
6 Dünaamiline mäluhaldus II
6.1 Kodutöö
6.2 Harjutused
6.3 Videolingid
  • 7. Kontrolltöö 1

Seitsmendal nädalal toimub 1. kontrolltöö

1. kontrolltöö näidis on Moodles

  • 8. Dünaamiline mäluhaldus III
  • 9. STL andmestruktuurid I
  • 10. STL andmestruktuurid II
  • 11. OOP I Klassid
  • 12. OOP II Pärilus ja polümorfism
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2

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

2. kontrolltöö näidis on Moodles

  • 16. Projekti esitlus
  • Mõned viited - vajalikud kaaslased
  • Vanad materjalid
  • Juhendid
  • Viited

Harjutusülesanded

1. Funktsioonid

Koosta viis funktsiooni

int* loo_andmed(int)

vector<int>* loe_andmed(string* failinimi)

void tootle_andmeid(int*, int)

void kustuta_andmed(int*, vector<int>*)

tootle_andmeid_vektoris(vector<int>*)

  • Funktsioon loo_andmed loob etteantud pikkusega täisarvumassiivi kuhjamälus, täidab selle juhuslike täisarvudega ning tagastab viida loodud massiivile. Ühest väiksema pikkuse korral ei tohi funktsioon massiivi luua ning peab tagastama NULL-viida (nullptr).
  • Funktsioon loe_andmed loob täisarvuvektori kuhjamälus, loeb etteantud failist täisarvud (asuvad mitmel real tühikutega eraldatult) loodud vektorisse ning tagastab viida loodud vektorile.
  • Funktsioon tootle_andmeid arvutab massiivis arvude summa ja keskmise ning kuvab tulemused ekraanile. Pärast kuvamist muudab funktsioon massiivi elemendid negatiivseks. NULL-viida nullptr puhul ei tohi funktsioon midagi teha.
  • Funktsioon tootle_andmeid_vektoris arvutab vektoris andmete summa ja keskmise ning kuvab tulemused ekraanile.
  • Funktsioon kustuta_andmed vabastab loodud massiivi ja vektori.

Testfunktsioonis testi loodud funktsioonide tööd.

2. Autod

Loo klass Auto, kus on privaatsed isendimuutujad auto margi (string), energiaklassi (string) ja kütuse kulu liitrites (double) 100 km kohta. Klassis on vaikekonstruktor ja kolme parameetriga konstruktor. Klassis on avalik funktsioon kytusekulu, mis tagastab kütusekulu. Klassis on destruktor, kus kuvatakse ekraanile "[mark] destruktoris". Klass peab üle defineerima operaatori <<, mille abil saab auto infot ekraanile kuvada.

Failis autod.txt on igal real andmed ühe auto kohta eraldatult semikooloniga (;). Autode arv failis ei ole ette teada.

Näide faili autod.txt võimaliku sisu kohta

Audi A4 Avant;E 167;7.3
Ford Explorer;A 71;3.1
Mazda 6;E 167;7.4
Mini Countryman;D 146;6.5

https://eteenindus.mnt.ee/public/heitkogusteteatmik/heitkogusteTeatmik.jsf

Kirjuta funktsioon Auto* looAuto(const string rida), mille parameetriks on andmed samal kujul nagu faili ühel real. Funktsioon loob kuhjamällu Auto objekti ja tagastab selle viida.

Kirjuta funktsioon vector<Auto*>* loeAutod(const string fail), mis loob kuhjamällu vektori vector<Auto*>*. Funktsioon loeb failist autode andmed ja kasutades funktsiooni looAuto lisab vektorisse viidad (pointer) autode objektidele. Funktsioon tagastab viida vektorile.

Kirjuta funktsioon Auto* vähima_kuluga(vector<Auto*>* autod), mis tagastab viida vähima kütusekuluga autole.

Kirjuta funktsioon void kustutaAutod(vector<Auto*>* autod), mis kustutab vektoris olevad autode viidad.

Testfunktsioonis loe autod vektorisse kasutades funktsiooni loeAutod. Kuva autode info ekraanile. Leia vähima kütusekuluga auto kasutades funktsiooni vähima_kuluga. Kuva selle auto info ekraanile. Kustuta vektoris viidad autodele kasutades funktsiooni kustutaAutod. Lõpuks kustuta viit vektorile.

3. Oma tehtud aheljärjend (linked list)

 

Loo klassimall, mis hoiab aheljärjendit. Järjendis hoitav element on malliparameetri tüüpi. Aheljärjendis on elemendid omavahel seotud viitadega. Klassist isendi loomisel on aheljärjend tühi. Klassis on järgmised funktsioonid:

  • elemendi lisamiseks koos mälu reserveerimisega
  • elemendi otsimiseks etteantud nime järgi
  • elemendi kustutamiseks etteantud nime järgi koos mälu vabastamisega
  • elementide arvu tagastamiseks
  • järjendi hävitamiseks koos mälu vabastamisega
  • mõtle ise juurde!

Nõuded malliparameetrile:

  • Malliparameeter on klass või struktuur, kus on vähemalt kaks liiget:
    • string tüüpi nimi
    • malliparameetri tüüpi viit (pointer) järgmisele
  • Klassis või struktuuris on funktsioon getElement(), mis tagastab nime
  • Klassis või struktuuris on funktsioon getJargmine(), mis tagastab viida järgmisele
  • Klassis või struktuuris võib olla veel liikmeid ja funktsioone

Loo oma klass ja katseta loodud aheljärjendit.

4. Järjestatud aheljärjend

Modifitseeri eelmise ülesande lahendust selliselt, et tekiks järjestatud aheljärjend. Sellisel juhul peavad järjendis hoitavad objektid olema võrreldavad.

5. Kahesuunaline aheljärjend

Modifitseeri kolmanda ülesande lahendust selliselt, et tekiks kahesuunaline aheljärjend. Sellisel juhul peavad järjendis hoitavad objektid olema varustatud kahe viidaga - viit eelmisele ja viit järgmisele elemendile. Lisa elemendi otsimise funktsioonile parameeter otsimise suuna jaoks.

  • 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