Kodused ülesanded
1. Üledefineeritud funktsioonid
NB!
Kõikide funktsioonide deklaratsioonid paiguta faili kodu3_fun_dekl.h
, funktsioonide definitsioonid faili
kodu3_fun_def.cpp
. Esita mõlemad failid.
Koosta programm, kus on kolm samanimelist funktsiooni fun
, mis erinevad üksteisest signatuuri poolest. Funktsioonide deklaratsioonid peavad olema definitsioonidest eraldi.
- kui argumentideks on kaks
int
-tüüpi arvu, siis tagastatakse nende summa; - kui argumentideks on üks
double
-tüüpi arv, siis tagastatakse selle arvu ruut, mis on ümardatud täisarvuks; - kui argumentideks on
unsigned int
-tüüpi arv ja sõne, siis tagastatakse sõne paljundatuna vastav arv kordi.
Näide kolmandast funktsioonist. Funktsiooni poole pöördumisele main
funktsioonis
cout << fun(10, "C++");
vastav väljund on
C++C++C++C++C++C++C++C++C++C++
2. Kehamassiindeks
Koosta funktsioon kehamassiindeks
, mis tagastab kehamassiindeksi. Funktsiooni parameetriteks on pikkus meetrites ja kaal kilogrammides. Funktsioonis main
saadakse pikkus meetrites ja kaal kilogrammides käsurealt.
Koosta teine funktsioon hinnang
, mille parameetriks on kehamassiindeks ja mis tagastab hinnangu sõnena.
Hinnanguks sobivad sõnad: rasvumine, ülekaal, normaalkaal, alakaal, vt https://www.kehamassiindeks.com/
Näide funktsiooni tööst:
Kui main
funktsioonis on käsud
double kmi{kehamassiindeks(1.94, 65)}; cout << "kmi: " << kmi << " hinnang: "<< hinnang(kmi) << '\n';
siis väljundiks on
kmi: 17.2707 hinnang: alakaal
Vihje. Käsurealt saadud argumendid tuleb teisendada arvudeks. Uuri funktsioonide stod
ja stoi
kasutamist.
Testimiseks keskkonnas CLion
saab käsurea argumente lisada Run->Run->Edit Configurations->Program Arguments
. Keskkonnas Visual Studio Code
saab käsurea argumente lisada kompileeritud programmi käivitamisel terminaliakna käsureal.
NB! Siin 'ü' kasutamine sõnes töötab.
3. Failist lugemine ja faili kirjutamine
Antud on tekstifail, milles on igal real ujukomaarvud, eraldajaks ;;
. Ridade arv ei ole ette teada ja ujukomaarvude arv ridades on erinev.
Näide faili sisust
1.1;;2.3;;5;;9;;5.3 4.1;;2.2;;5.6;;9.2 3.1;;2.4;;5.2;;9.1;;3.2;;2.5 8.1;;5.2;;4.5;;3.9
Koosta funktsioon andmed_failist
, mis saab argumendiks sõnena faili nime ja mis loeb andmed failist ning leiab iga rea jaoks aritmeetilise keskmise ja kõikide arvude summa üle faili. Tulemused kirjuta faili tulemused.txt
järgmiselt: kõigepealt igale reale rea aritmeetiline keskmine ja viimasele reale kõigi elementide summa.
Näites toodud faili korral on faili tulemused.txt
sisu järgmine:
4.54 5.275 4.25 5.425 91.0
Vihje. Siin võib kasulik olla andmestruktuur vector
.
4. Mustri otsimine
Käsureal antakse mustrina ette sõne, mida tuleb käsurea argumentidest otsida, kujul
-otsi=otsitav sõne
.
Koosta funktsioon otsi_mustrit
, mille parameetriteks on käsurea argumendid ja mis teeb kindlaks, kas otsitav sõne on käsurea teiste argumentide hulgas.
Funktsiooni signatuur: string otsi_mustrit(int& argc, char* argv[])
Siin argumentide arv edastatakse viitena (&
ja sõnemassiiv viidana *
)
Näited funktsiooni tööst.
- Kui käsureal on
kala -otsi=kana kass kana
, siis funktsioon tagastab"Otsitav 'kana' leiti."
- Kui käsureal on
kala -otsi=koer kass kana
, siis funktsioon tagastab"Otsitavat 'koer' ei leitud."
- Kui käsureal on
kala kass kana
, siis funktsioon tagastab"Mustrit ei ole olemas."
Vihje. Kasu on string
funktsioonidest find()
ja substr()
, vt lähemalt
http://www.cplusplus.com/reference/string/string/substr/
http://www.cplusplus.com/reference/string/string/find/
Mall: (kodu3.zip)