Kodused ülesanded
Funktsioonid
NB! Loodud funktsioonid lisa vastavalt failidesse andmed.h
ja andmed.cpp
ning main
funktsioon kirjuta faili kodu9.cpp
.
1. Koosta kolm funktsiooni int* loo_andmed(int)
, void tootle_andmeid(int*, int)
ja void kustuta_andmed(int*)
, mis töötavad järgmiselt:
- Funktsioon
loo_andmed
loob etteantud täisarvu pikkuse täisarvumassiivi kuhjamälus, täidab selle suvaliste täisarvudega ning tagastab loodud massiivi.
* Ühest väiksema pikkuse korral ei tohi funktsioon massiivi luua ning peab tagastama NULL-viida (nullptr
).
- Funktsioon
tootle_andmeid
arvutab andmete summa ja keskmise ning väljastab need. Pärast väljastamist muudab funktsioon massiivi elemendid negatiivseks.
* NULL-viida puhul ei tohi funktsioon midagi teha.
- Funktsioon
kustuta_andmed
vabastab loodud massiivi.
2. Loo kaks funktsiooni unique_ptr<int> genereeri_arv()
ja void proovi_arvu(weak_ptr<int>)
, mis töötavad järgmiselt:
- Funktsioon
genereeri_arv
tagastab unikaalse viida arvule, mis on täidetud juhusliku arvuga vahemikus0 <= arv <= 100
. - Funktsioon
proovi_arvu
väljastab nõrgas viidas antud arvu juhul kui viit ei ole ära kustutatud. Vastasel juhul väljastab funktsioon "ei eksisteeri".
Näide funktsioonide tööst
int main() { auto arv = genereeri_arv(); cout << *arv << '\n' ; arv = genereeri_arv(); cout << *arv << '\n' ; auto eksisteerivArv = make_shared< int >( 1 ); proovi_arvu(eksisteerivArv); // jagatud viidast tehakse automaatselt nõrk viit weak_ptr< int > wp; proovi_arvu(wp); auto andmed = loo_andmed( 10 ); for ( int i = 0 ; i < 10 ; i++) { cout << andmed[i] << ' ' ; } cout << '\n' ; tootle_andmeid(andmed, 10 ); for ( int i = 0 ; i < 10 ; i++) { cout << andmed[i] << ' ' ; } cout << '\n' ; kustuta_andmed(andmed); cout << loo_andmed( 0 ) << '\n' ; // peaks olema 0x0 tootle_andmeid(nullptr, 0 ); // ei tohiks väljastada midagi return 0 ; } |
Võimalik väljund on:
50 67 1 ei eksisteeri 58 59 53 61 82 80 15 58 12 45 Summa: 523 Keskmine: 52.3 - 58 - 59 - 53 - 61 - 82 - 80 - 15 - 58 - 12 - 45 0 |
Testi loodud funktsioone funktsioonis main
.