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
  • 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
11 OOP I Klassid
11.1 Kodutöö
11.2 Harjutused
11.3 Videolingid
  • 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

Sellel nädalal arendame edasi 5. nädala kodutööd. Kasutame isendiväljadeks tarku viitasid (smart pointers), lisame klassidesse koopia- ja teisalduskonstruktorid.

1. Punkt tasandil

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

FunktsioonEesmärk
Point2 ()algväärtustab koordinaadid nullidega
Point2 (float nx, float ny)parameetritega konstruktor – väärtustab koordinaadid
getNx(), setNx(), getNy(), setNy()piilufunktsioonid koordinaatide jaoks (koordinaadid on private)

Realiseerida funktsioon distanceFrom ja operaator operator<<.

FunktsioonEesmärk
float distanceFrom (shared_ptr<Point2> p)tagastab punkti kauguse mingist teisest punktist tasandil
operator <<väljastab punkti koordinaadid kujul (x, y)

2. Sirglõik

Loo klass Line2 (päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti p1 ja p2 abil. Klassi isendimuutujad on privaatsed (shared_ptr<Point2> p1 ja shared_ptr<Point2> p2).

MeetodEesmärk
Line2 ()vaikekonstruktor – loob tipud (Point2 vaikekonstruktoriga)
Line2 (shared_ptr<Point2> np1, shared_ptr<Point2> np2)parameetritega konstruktor – väärtustab klassi elemendid
Line2 (const Line2& lr)koopiakonstruktor – väärtustab klassi elemendid
Line2 (Line2&& lr)teisalduskonstruktor – väärtustab klassi elemendid
float length ()tagastab sirglõigu pikkuse (kasuta punkti distanceFrom meetodit)
operator <<väljastab sirglõigu andmed kujul (p1 - p2)
getNp1(), setNp1(), getNp2(), setNp2()piilufunktsioonid punktide jaoks (punktid on private)

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. Klassi isendimuutujad on privaatsed (shared_ptr<Point2> p ja float r).

MeetodEesmärk
Circle2 ()vaikekonstruktor – loob punkti (0, 0) ja paneb raadiuseks nulli
Circle2 (shared_ptr<Point2> np1, float nr)parameetritega konstruktor – väärtustab klassi elemendid
Circle2 (const Circle2& cr)koopiakonstruktor – väärtustab klassi elemendid
Circle2 (Circle2&& cr)teisalduskonstruktor – väärtustab klassi elemendid
float circumference ()tagastab ringi ümbermõõdu
float area ()tagastab ringi pindala
bool contains (shared_ptr<Point2> p)tagastab true, kui antud punkt on ringjoone peal või sees, vastasel juhul false (kasuta punkti distanceFrom meetodit)
bool contains (shared_ptr<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)
getNp1(), setNp1(), getNr(), setNr()piilufunktsioonid liikmete jaoks (private)
  • 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