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