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

Programming in C++ 2022/23 spring

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Funktsioonimallid, failitöötlus
  • 5. OOP I Klassid
  • 6. OOP II Pärilus ja polümorfism
  • 7. Kontrolltöö 1?

Seitsmendal nädalal toimub 1. kontrolltöö

7.1 1. kontrolltöö näide?
  • 9. Dünaamiline mäluhaldus II
9 Viidad. Dünaamiline mäluhaldus II
9.1 Kodutöö
9.2 Harjutused
9.3 Videolingid
  • 10. Klassimallid
  • 11. STL andmestruktuurid I
  • 12. STL andmestruktuurid II
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2?

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

15.1 2. kontrolltöö näide?
  • 16. Projekti esitlus?
  • Viiteid
  • Vanad materjalid
  • Praktikumid
  • Juhendid
  • Viited

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 vahemikus 0 <= 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.

  • 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