Arvutiteaduse instituut
  1. Kursused
  2. 2022/23 kevad
  3. Programmeerimine keeles C++ (LTAT.03.025)
EN
Logi sisse

Programmeerimine keeles C++ 2022/23 kevad

  • 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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused