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)