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
6 OOP II Pärilus ja polümorfism
6.1 Kodutöö
6.2 Harjutused
6.3 Videolingid
  • 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ülesanne

1. Võistlused

Ülesande lahenduses peavad kõik deklaratsioonid olema päisefailis osalejad_tulemused.h ja kogu lähtekood peale main funktsiooni failis osalejad_tulemused.cpp.

Igal aastal toimuvad erinevad spordivõistlused. Täiskasvanute üritustel saavad osalejad mingi koha. Laste üritustel võitjaid ei selgitata, lapsed on alati võitjad. Kõikide tulemuste andmed on failis järgmisel kujul:

38002055060;4. Tartu Linnamaraton;4
37806135649;34. Tartu Rattaralli;2
60212243307;9. Tartu Rulluisumaraton
34501234215;18. Tartu Rattamaraton;1

Failis on igal real andmed järjekorras: osaleja isikukood, võistluse nimi, saadud koht (lapsosaleja puhul kohta pole). Eraldajaks on semikoolon.

Programm peab sisaldama abstraktset klassi Osalenud, klasse Tulemus, Osaleja ja Lapsosaleja. Funktsioonis main luuakse tulemuste vektor ja osalejad ning testitakse ka erinevate liikmefunktsioonide tööd. Kõikide klasside kõik isendiväljad peavad olema privaatsed.

Klassis Tulemus peavad olema privaatsed isendiväljad järgmise info jaoks: osaleja isikukood (string), võistluse nimi (string) ja saadud koht (int). Klassis peab olema kolme parameetriga konstruktor osaleja isikukoodi , võistluse nime ja saadud koha määramiseks, samuti vajalikud get-funktsioonid. Klass peab üle defineerima operaatori <<, mille abil saab tulemust ekraanile kuvada.

Abstraktne klass Osalenud sisaldab int-tüüpi virtuaalseid funktsioone voite ja tulemusi (kummalgi ei ole argumente).

Klass Osaleja on klassi Osalenud alamklass. Klassis on privaatsed isendiväljad järgmise info jaoks: osaleja nimi (string), isikukood (string) ja tulemuste nimekiri (vector<Tulemus>). Klassis peab olema konstruktor osaleja nime ja isikukoodi määramiseks ja vajalikud get-funktsioonid.

Ühel osalejal võib olla mitu tulemust. Äsjaloodud osalejal ei ole ühtegi tulemust. Tulemuste lisamiseks peab olema funktsioon lisaTulemused, mis saab argumendiks tulemuste vektori ja jätab meelde selle osaleja tulemused (ehk valib argumendina antud tulemuste vektorist ainult need tulemused, mis on seotud antud osalejaga). Funktsioon voite tagastab osaleja võitude arvu (ehk saavutatud koht peab olema 1). Funktsioon tulemusi tagastab osaleja tulemuste arvu (ka võit on tulemus). Klass peab üle defineerima operaatori <<, mille abil saab osaleja infot ekraanile kuvada.

Klass Lapsosaleja on klassi Osaleja alamklass. Klassi konstruktor võtab lisaks osaleja nimele ja isikukoodile ka vanema isikukoodi. Funktsioon voite tagastab võitude arvu, mis lapsosaleja puhul ühtlasi ka tulemuste arv. Klass peab üle defineerima operaatori <<, mille abil saab lapsosaleja infot ekraanile kuvada.

Programmis on funktsioon loe_failist, mis võtab argumendiks failinime ja viite vektorile vector<Tulemus>. Funktsioon täidab vektori failist saadud infoga. Tulemuste arv failis ei ole teada (programm peaks töötama suvalise arvu tulemustega).

Funktsioonis main loetakse failist tulemused. Luua kolm osalejat ja kaks lapsosalejat. Osalejate isikukoodid saab valida näitefailist. Nimed ja lapsosaleja vanemate isikukoodid on vaja ise välja mõelda. Iga osaleja (ka lapsosaleja) korral rakendada tulemuste lisamise funktsiooni kasutades argumentidena tulemuste vektorit. Osalejate ja tulemuste info kuvada ekraanile. Näide tulemuse osaleja info kuvamisest

isikukood: 38002055060 võistlus: 34. Tartu Rattaralli koht: 3

Näide tulemuse osaleja info kuvamisest

Osaleja nimi: Mait isikukood: 37806135649 tulemusi: 2 võite: 1
  • 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