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
  • 10. Klassimallid
10 Klassimallid
10.1 Kodutöö
10.2 Harjutused
10.3 Videolingid
  • 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

Harjutusülesanded

1. Magasin

Implementeeri klassi Magasin konstruktorid ja funktsioonid, kui klassi deklaratsioon on antud. Klass peab käituma analoogiliselt andmestruktuurile magasin (stack), kus push lisab elemendi (m_pea hakkab viitama viimati lisatud elemendile) ja pop eemaldab viimati lisatud elemendi. Elementideks on üksteisega ahelana seotud tipud.

template <typename T>
class Magasin{
public:
  Magasin();                  // vaikekonstruktor
  ~Magasin();                           // destruktor

  Magasin(Magasin& m);            // koopiakonstruktor
  Magasin& operator = (const Magasin& m); // koopia omistamise (''copy assignment'') operaator
  void push(T& element);        // lisa element magasini
  T pop();                            // võta element magasinist välja
  bool isEmpty() const;               // kas magasin on tühi?
  void tryki();                       // kuvab magasini elemendid ekraanile
private:
  // Siseklass
  class Tipp{
  public:
    Tipp(const T& liige) : m_liige{liige} {} // Tipp konstruktor
    T m_liige;            // Tipus hoitav objekt
    Tipp* m_jargmine{};   // viit järgmisele tipule 
  };

  Tipp* m_pea{};     // viit magasini otsale
};
 

2. Massiiv

Kirjuta malliklass Massiiv, mis hoiab endas fikseeritud pikkusega massiivi. Malliklassil on kaks parameetrit. Esimene on massiivi elemendi tüüp ja teine on elementide arv massiivis. Klass peab täitma järgmisi nõudeid:

  • Massiivi elemendid paigutada C++ fikseeritud pikkusega massiivi.
  • Klassis on ühe parameetriga konstruktor, parameetriks on std::initializer_list (vajalik päis <initializer_list>). Massiiv väärtustatakse parameetris antud väärtustega. Kui parameetris on vähem elemente kui massiivi pikkus, siis ülejäänud väärtustatakse nulliga.

vt https://cplusplus.com/reference/initializer_list/initializer_list/

  • Klassis on koopiakonstruktor ja destruktor.

vt https://en.cppreference.com/w/cpp/language/copy_constructor

  • Klassis on üle defineeritud operaator operator[] elemendi kättesaamiseks indeksi abil.
  • Klassis on funktsioon, mis tagastab massiivi elementide arvu.
  • Klassis on funktsioon, mis täidab massiivi etteantud arvuga.
  • Kõik andmed peavad olema privaatsed.
  • Klassis on funktsioon tryki, mis võimaldab massiivi elemente mõistlikult ekraanile kuvada.
  • Klassis on üle defineeritud operaator operator<<, mis võimaldab massiivi elemente mõistlikult ekraanile kuvada.
  • 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