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
  • 11. STL andmestruktuurid I
STL andmestruktuurid I
11.1 Kodutöö
11.2 Harjutused
11.3 Videolingid
  • 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. Andmekogumid hulkadena

Koosta järgmised mallifunktsioonid andmekogumitega opereerimiseks. Funktsioonid peavad töötama andmekogumite vector, list ja deque korral. Vajadusel teha funktsioone juurde.

NB! Mitte kasutada päist <set>!

  • hulkade ühisosa
template <typename T1, typename T2, typename T3>
void yhisosa(T1& esimene, T2& teine, T3& kolmas)
  • hulkade ühend
template <typename T1, typename T2, typename T3>
void yhend(T1& esimene, T2& teine, T3& kolmas)
  • hulkade vahe
template <typename T1, typename T2, typename T3>
void vahe(T1& esimene, T2& teine, T3& kolmas)

Näited funktsioonide rakendamisest andmekogumitel

    vector<int> v1{10, 11, 5, 3, 3};
    vector<int> v2{3, 5, 3, 5, 1};
    vector<int> v3{};
    tryki(v1, cout); // kuvab elemendid ekraanile
    tryki(v2, cout);
    yhisosa(v1, v2, v3);
    cout << "v1 ja v2 ühisosa:\n";
    tryki(v3, cout);
    v3.clear();
    yhend(v1, v2, v3);
    cout << "v1 ja v2 ühend:\n";
    tryki(v3, cout);
    v3.clear();
    vahe(v1, v2, v3);
    cout << "v1 ja v2 vahe:\n";
    tryki(v3, cout); 
 10 11 5 3 3
 3 5 3 5 1
v1 ja v2 ühisosa:
 5 3
v1 ja v2 ühend:
 10 11 5 3 1
v1 ja v2 vahe:
 10 11

2. Funktsioonide tööaja võrdlemine

Koosta järgmised mallifunktsioonid suurte andmekogumite töö võrdlemiseks. Kõik andmekogumid hoiavad täisarve.

  • andmekogumi täitmine
template <typename T>
void täida(T& andmed, int n);

Funktsioon peab täitma etteantud andmekogumi (vector, deque või list) järjestikuste täisarvudega (alates nullist). Funktsioon peab töötama kolme nimetatud andmekogumi korral.

  • Summa leidmine

1. Summa leidmine indeksi abil, kus elemendid saadakse kätte operaatori [] abil.

template <typename T>
int summa1(T& andmed);

Funktsioon peab töötama vector ja deque korral.

2. Summa leidmine iteraatori abil. Andmekogum läbitakse iteraatori abil.

template <typename T>
int summa2(T& andmed);

Funktsioon peab töötama vector, deque ja list korral.

Võrrelge summa leidmise aega mõlema funktsiooni abil ja erinevate andmekogumite korral. Valige sobiv elementide arv (> 1e5). Aja mõõtmiseks saab kasutada päises <chrono> olevat funktsiooni now(), mis annab hetke aja:

auto algus = chrono::high_resolution_clock::now();
auto lõpp = chrono::high_resolution_clock::now();
auto aeg = chrono::duration_cast<std::chrono::nanoseconds>(lõpp - algus);

Tuleb silmas pidada, et tulemus on nanosekundites, st on mõistlik teisendada sekunditeks. Põhjendage saadud tulemusi.

  • 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