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

Programming in C++ 2023/24 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öö

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

Kodused ülesanded

1. Funktsioonid

NB! Loodud funktsioonid lisa vastavalt failidesse andmed.h ja andmed.cpp ning main funktsioon kirjuta faili kodu6.cpp.

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 täisarvu pikkuse täisarvumassiivi kuhjamälus, täidab selle juhuslike täisarvudega ning tagastab loodud massiivi.
       * Ü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 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.

Funktsioonis main 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.

Funktsioonis main 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.

Lisaülesanne

3. Klassimall dünaamilise pikkusega listi jaoks

Täienda ja muuda 4. nädalal lahendatud ülesannet selliselt, et klassimall hoiaks endas dünaamilise pikkusega listi. Listi peab saama lisada elemente nii algusse, keskele kui ka lõppu. Listist peab saama elemente kustutada nii algusest, keskelt kui ka lõpust. Muuda kõiki teisi funktsioone selliselt, et nad annaksid õige tulemuse.

Mall: (kodu6.zip)

  • 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