Arvutiteaduse instituut
  1. Kursused
  2. 2024/25 kevad
  3. Programmeerimine keeles C++ (LTAT.03.025)
EN
Logi sisse

Programmeerimine keeles C++ 2024/25 kevad

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
2 Keele põhikonstruktsioonid I
2.1 Kodutöö
2.2 Harjutused
2.3 Videolingid
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
  • 6. Dünaamiline mäluhaldus II
  • 7. Kontrolltöö 1

Seitsmendal nädalal toimub 1. kontrolltöö

1. kontrolltöö näidis on Moodles

  • 8. Dünaamiline mäluhaldus III
  • 9. STL andmestruktuurid I
  • 10. STL andmestruktuurid II
  • 11. OOP I Klassid
  • 12. OOP II Pärilus ja polümorfism
  • 13. Erindite töötlemine
  • 14. Täiendavad teemad
  • 15. Kontrolltöö 2

Viieteistkümnendal nädalal toimub 2. kontrolltöö

2. kontrolltöö näidis on Moodles

  • 16. Projekti esitlus
  • Mõned viited - vajalikud kaaslased
  • Vanad materjalid
  • Juhendid
  • Viited

Kodused ülesanded

Ülesannete lahendused paigutada malli (kodu2.zip) (saadaval ka Moodle'is kodutöö esitamise all) ja fail kodu2.cpp laadida Moodlesse. Ülesanded 2 ja 4 kontrollitakse käsitsi.

1. Kolmnurk

Kirjuta programmilõik (funktsioon kolmnurk), mis ootab kasutajalt kolmnurga kõrgust (mitte kuvada küsimisel teksti) ja kuvab ekraanile tärnidega täidetud võrdhaarse kolmnurga. Näiteks n = 5 korral saame järgmise kujundi:

  

2. Naelad ja kilod

Kirjuta programmilõik (funktsioon tabel), mis kuvab ekraanile naela ja kilogrammi võrdlustabeli. Programm küsib kasutajalt alguse, sammu ja lõpu (ilma küsiva tekstita). Tekita kaks 10 sümboli laiust tulpa. Tulba pealkirjad eraldatakse andmetest tärnidereaga. Näiteks, algusega 2.2, sammuga 0.4 ja lõpuga 4.0 kuvatakse järgmine tabel:

 

NB! Ülearuseid tühikuid rea lõpus ei tohi olla! Võrdle väga täpselt oma programmi väljundit Moodle testi väljundiga!

Vihje

std::print kasutamisel uurida seda Githubi linki.

cout ja << kasutamisel uuri <iomanip> päisefaili.

3. Krediitkaardi numbri valideerimine (Luhni algoritm)

Kirjuta programm (funktsioon krediitkaart), mis ootab kasutajalt krediitkaardi numbrit (mitte küsida tekstiga). Programm peab hakkama saama vähemalt 16-kohalise täisarvuga. Programm kuvab ekraanile, kas krediitkaardi number on "korrektne" või "vigane". Aluseks võta Luhni algoritm.

Krediitkaardi numbrite testimiseks saad kasutada järgnevat veebilehte: https://www.dcode.fr/luhn-algorithm.

Sõltuvalt lahendusviisist on vaja aru saada erinevustest täisarvutüüpidel.

Vihje

Uuri täisarvu erinevaid tüüpe ja nende esitusvahemikke.

4. Blackjack ehk 21

Kirjuta lihtne mängu blackjack simulatsioon (funktsioon blackjack). Siin ülesandes on lihtsustatud blackjack.

Blackjackis võistlevad diiler ja mängija. Võidab see, kelle kaartide summa on lähedam arvule 21 (kuid mitte suurem kui 21). Diileril on käes kaardid, mille summa on vähemalt 16 ja mitte suurem kui 21. Diileri kaardisumma on mängija eest peidetud. Mängija saab järjest tõmmata kaarte ja lõpuks loobuda.

Mängija võidab, kui

  • kaartide summa on täpselt 21
  • loobumise hetkel on mängija kaartide summa lähemal arvule 21 (kuid mitte suurem kui 21) kui diileri oma.

Mängija kaotab, kui

  • kaartide summa on üle 21
  • loobumise hetkel on diileril kaartide summa sama või suurem mängija omast.

Selles ülesandes on vaja kasutada juhuarvude genereerimiseks Mersenne Twister pseudojuhuslike arvude genereerimist. Pseudojuhuslike arvude generaator on fikseeritud algoritm, mida algväärtustatakse RNG arvuga ehk seemnega (seed). Sama seemne korral genereeritakse samad arvud samas järjestuses. Seemneks kasuta unsigned long või unsigned int tüüpi arvu. Generaatoriks on mt19937, mis asub päises <random>. Saadud juhuslik arv teisenda õigesse vahemikku mooduliga, mitte uniform_int_distribution.

Näiteks programmijupi

mt19937 gen{25};
cout << gen() << " " << gen() << " " << gen() << '\n';

käivitamisel saame alati tulemuseks

3737154692 2989580606 2500860378

Programm peab

  • küsima kasutajalt RNG arvu Mersenne Twister generaatori algväärtustamiseks
  • looma suvalise arvu lõigul [16-21], mis tähistab diileri kätt
  • järjest genereerima kaarte lõigul [2-11] ja küsima kasutajalt, kas ta soovib jätkata
  • kui kasutaja vastab valesti küsimisele (j/e), siis kuvama "Proovi uuesti!" ja ootama sobivat sisendit.

Programm peab arvestama reaalse olukorraga, kus kaardipakis on täpselt neli sama väärtusega kaarti, st rohkem kui neli sama numbriga kaarti ei saa tekkida. Sellises olukorras on vaja tõmmata uus kaart kuni sobivani.

Näidisväljundeid programmi tööst:

 

=======================

 

=======================

 

=======================

 

Vihje

Võrdle väga täpselt oma programmi väljundit Moodle testi väljundiga! Erinevuste leidmiseks saab kasutada online võrdlejat, nt https://www.diffchecker.com/text-compare/

  • 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