Institute of Computer Science
  1. Courses
  2. 2023/24 spring
  3. Programming in C++ (LTAT.03.025)
ET
Log in

Programming in C++ 2023/24 spring

  • Pealeht
  • 1. Muutujad ja andmetüübid
  • 2. Keele põhikonstruktsioonid I
  • 3. Keele põhikonstruktsioonid II
  • 4. Klass, struktuur, mallid
  • 5. Dünaamiline mäluhaldus I
5 Dünaamiline mäluhaldus I
5.1 Kodutöö
5.2 Harjutused
5.3 Videolingid
  • 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öö

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

Kodused ülesanded

Selle kodutöö jaoks vajalikud lipud: -std=c++20 -Wall -Werror -Wpedantic

Testimiseks, kus on main(), looge fail kodu5.cpp. main() ümbritseda VPL_TEST päisekaitsmega, nagu on olnud varasemad kodutööd.

1. Üledefineeritud funktsioonid

Selle ülesande funktsioonide deklaratsioonid ja definitsioonid pane vastavalt failidesse faili arvutused.h ja arvutused.cpp. Koosta funktsioonid kolmest täisarvust suurima leidmiseks järgmiste signatuuride jaoks:

int suurim(int*, int*, int*);

int suurim(int&, int&, int&);

int suurim(int&, int*, int*);

void suurim(int*, int*, int*, int*); //neljas parameeter on suurima jaoks

void suurim(int&, int&, int&, int&); //neljas parameeter on suurima jaoks

Võib kasutada päist <cmath>. Katseta kõiki funktsioone korraga main funktsioonis.

Näiteks, koodijupi

int a{2}, b{8}, c{5};
cout << "suurim = " << suurim(&a, &b, &c) << '\n';

tulemusena kuvatakse ekraanile 8.

Koostada funktsioonimallid kahe esimese funktsiooni jaoks (nimed vastavalt tSuurimP, tSuurimR) , mis töötaksid arvulise tüübi korral.

2. Geomeetria

Selles ülesandes palun ärge muutke klassi liikmete nimesid ja hoidke nad avalikud.

2.1. Punkt

Failides point2.h ja point2.cpp on klassi Point2 definitsioon. Point2 määrab kahemõõtmelises ruumis punkti, millel on kaks float tüüpi koordinaati x ja y.

MeetodEesmärk
Point2 ()algväärtustab koordinaadid nullidega
Point2 (float nx, float ny)parameetritega konstruktor – väärtustab koordinaadid
float distanceFrom (Point2* p)tagastab punkti kauguse mingist teisest punktist tasandil
operator <<väljastab punkti koordinaadid kujul (x, y)

Kahe punkti vahelise kauguse valemit vt
https://opiobjektid.tptlive.ee/joonevorrandid/kahe_punkti_vaheline_kaugus.html

2.2. Sirglõik

Loo klass Line2 (päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti *p1 ja *p2 abil.

MeetodEesmärk
Line2 (Point2* np1, Point2* np2)parameetritega konstruktor – väärtustab klassi elemendid
float length ()tagastab sirglõigu pikkuse (kasuta punkti distanceFrom meetodit)
operator <<väljastab sirglõigu andmed kujul (p1 - p2)

2.3. Ring

Loo klass Circle2 (päisefail koos lähtekoodifailiga), mis esitab tasandil asuvat ringi keskpunktiga *p1 ja mittenegatiivse raadiusega r. Raadiuse mittenegatiivsust tuleb jälgida kõikides funktsioonides (konstruktor, skaleerimine). Kui kasutaja annab ette negatiivse raadiuse konstruktoris, siis asenda see nulliga. Kui kasutaja soovib skaleerida negatiivse väärtusega, siis ei tee midagi.

MeetodEesmärk
Circle2 (Point2* np1, float nr)parameetritega konstruktor – väärtustab klassi elemendid
float circumference ()tagastab ringi ümbermõõdu
float area ()tagastab ringi pindala
bool contains (Point2* p)tagastab true, kui antud punkt on ringjoone peal või sees, vastasel juhul false (kasuta punkti distanceFrom meetodit)
bool contains (Line2* l)tagastab true, kui antud lõik on ringjoone sees (sh tipud joone peal), vastasel juhul false (kasuta distanceFrom meetodit)
void scale (float factor)korrutab ringi raadiuse antud väärtusega
operator <<väljastab ringi andmed kujul (p1, r)

3. Makefile

Kodutöö jaoks on vaja luua Makefile. Päisefailid paiguta kausta include, lähtekoodifailid kausta src, kompileeritud failid kausta lib (O failid), testrakendus kausta tests (EXE failid). Fail Makefile jääb juurkataloogi. Makefile kontrollitakse käsitsi üle.

Märkus. Siin on kasulik kompilaatori lipp -I, mis ütleb, kust kaustast otsida H-faile. Näide: -I include

  • 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