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