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

Programmeerimine keeles C++ 2024/25 kevad

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
  • 6. Dünaamiline mäluhaldus II
  • 7. Kontrolltöö 1

Seitsmendal nädalal toimub 1. kontrolltöö

1. kontrolltöö näidis on Moodles

  • 8. Dünaamiline mäluhaldus III
  • 9. STL andmestruktuurid I
  • 10. STL andmestruktuurid II
  • 11. OOP I Klassid
  • 12. OOP II Pärilus ja polümorfism
  • 13. Erindite töötlemine
13 Erindite töötlemine
13.1 Kodutöö
13.2 Harjutused
13.3 Videolingid
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2

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

2. kontrolltöö näidis on Moodles

  • 16. Projekti esitlus
  • Mõned viited - vajalikud kaaslased
  • Vanad materjalid
  • Juhendid
  • Viited

Koduülesanded

Esitada failid erindid.h ja erindid.cpp.

1. Andmed klaviatuurilt

Kirjuta funktsioon void loe_klaviatuurilt(), mis salvestab klaviatuurilt sisestatud täisarvud (iga täisarv eraldi real) sõnastikku map<int, size_t>, kus võtmeks on sisestatud täisarv ja väärtuseks esinemise sagedus. Programm peab töötama ka vigase sisendiga nii kaua, kuni klaviatuurilt sisestatakse info lõpp (Ctrl+Z või Cntrl+D sõltuvalt operatsioonisüsteemist). Peale täisarvude sisselugemist kuvada sõnastiku sisu ekraanile.

NB! Kui klaviatuurilt info lõpu kinnipüüdmine on keeruline (nt CLionis), siis võib käivitada testprogrammi terminaliaknast.

Näide 1 funktsiooni rakendamisest:

Sisesta täisarve, iga arv eraldi real:
2
3
2
^D
Sisestatud täisarvude sagedused:
2	2
3	1

Näide 2 funktsiooni rakendamisest:

Sisesta täisarve, iga arv eraldi real:
-4
2
r
Vigane sisend stoi
-4
err
Vigane sisend stoi
5
^D
Sisestatud täisarvude sagedused:
-4	2
2	1
5	1

2. Ruutvõrrand

NB! Ruutvõrrandi lahendamisel kasutatav matemaatiline mõiste on diskriminant. Ruutvõrrandi

 

diskriminant on on samaväärne järgmise determinandiga:

 

Kirjuta erindiklassimall NegatiivneDiskriminant, mis on päritud klassist exception. Klassis on kahe parameetriga konstruktor (string, T), kus T on arvuline tüüp. Klassis on funktsioonid getTeade() ja getDiskriminant().

Kirjuta mallifunktsioon

template <typename T>
T diskriminant(T a, T b, T c)

ruutvõrrandi diskriminandi arvutamiseks. Funktsioon arvutab diskriminandi (b*b - 4*a*c) ja tagastab selle. Negatiivse väärtuse korral viskab funktsioon erindi NegatiivneDiskriminant.

Kirjuta funktsioon std::string ruutvorrand(double a, double b, double c), mille parameetrid on ruutvõrrandi kordajad. Funktsioon tagastab sõne ruutvõrrandi kordajate ja lahendite kohta (vt näide).

cout << ruutvorrand(1, -1, -6) << '\n';
cout << ruutvorrand(1, -1, 6);
Kordajad on: 1.00 -1.00 -6.00
Ruutvõrrandi lahendid on: 3.00 -2.00
Kordajad on: 1.00 -1.00 6.00
Negatiivne diskriminant: -23.00 Reaalarvulist lahendit ei leidu!

Vihje

Et vältida std::to_string poolt tagastatud täpsust (kuus kohta peale koma), saab kasutada päises sstream olevat klassi ostringstream.

  • 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