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
4 Funktsioonimallid, failitöötlus
4.1 Kodutöö
4.2 Harjutused
4.3 Videolingid
  • 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
  • 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. Faili sümbolite sagedus

Kirjuta funktsioon sagedus, mis võtab argumendiks sõne, mis sisaldab avatava faili asukohta. Funktsioon peab avama faili ja iga rea kohta leidma kõige sagedasema sümboli. Võib eeldada, et failis on vähemalt üks rida. Lisaks peaks funktsioon kontrollima ka antud faili olemasolu ning selle puudumisel kasutajat teavitama ja funktsioonist väljuma. Kirjuta antud veateade veavoogu (cerr).

Vihje: Siin võib abiks olla andmestruktuur map.

NB! Kui täpitähed tekitavad ülesande lahendamisel probleeme, võib neid ignoreerida.

Näide funktsiooni tööst:

Faili sisend.txt sisu:

C++ is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup and first released in 1985 as an extension of the C programming language, or "C with Classes".
The language has expanded significantly over time, and modern C++ now has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation.
It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle, and IBM, so it is available on many platforms.

Funktsiooni kasutav kood:

int main() {
    sagedus("sisend.txt");
    sagedus("ei_eksisteeri.txt");
    return 0;
}

Väljund:

e: 19
e: 18
a: 20
Faili ei_eksisteeri.txt ei leitud.

2. Liitmise piiramine

Loo funktsioonimall nimega liidaJaPiira, millel on kaks malli argumenti. Esimene neist on tüübiargument T, teine täisarv N vaikimisi väärtusega 10. Funktsioon ise võtab kaks argumenti tüüpidega T ja tagastab antud argumentide summa juhul, kui see on väiksem kui teine malli argument. Vastasel juhul tagastada malli argumendi väärtus.

Näide funktsiooni poole pöördumisest:

int main() {
    std::cout << liidaJaPiira(4, 1) << '\n';
    std::cout << liidaJaPiira(10, 100) << '\n';
    std::cout << liidaJaPiira<int, 0>(0, 1) << '\n';
    return 0;
}

Väljund:

5
10
0

3. Elementide salvestaja

Loo funktsioonimall tüübiargumendiga T, mille signatuur on järgmine: void looFailJaKirjuta(filesystem::path asukoht, T elemendid[], size_t arv). Funktsioon peab avama väljundfaili antud asukohale ning kirjutama sinna teises argumendis antud elemendid. Kolmas argument arv määrab elementide arvu. Kui faili ei eksisteeri, peab funktsioon selle looma.

Näide:

int main() {
    auto asukoht = filesystem::path("elemendid.txt");
    string elemendid[] = {"üks", "kaks", "kolm"};
    looFailJaKirjuta<string>(asukoht, elemendid, 3);
}

Faili elemendid.txt sisu:

üks
kaks
kolm
  • 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