Kodused ülesanded
Sellel kodutööl on ette antud mall. Laadi alla kokkupakitud fail, kust leiad lähtefailid. Ülesandeks on faile täiendada ja neid ka juurde programmeerida.
- Alusprogramm: (zip)
Kodutöö eesmärk on luua lihtne geomeetriateek. Lahendusena peab kompileerimisel tekkima teek nimega libgeometry.a
. Teegi päised peavad olema tehtud nii, et alusfailidega kaasasolev testprogramm geometrytest
kompileerub.
Testprogrammi kompileerib terminaliaknas make test
.
Selles ülesandes struktureerime koodi kaustadesse. Päisefailid paiguta kausta include
, lähtekoodifailid kausta src
, valmisteek kausta lib
, testrakendus kausta tests
. Fail Makefile
jääb juurkataloogi. Juhinduda tuleb alusfailides ette tehtud struktuurist. Palun ärge muutke klassi liikmete nimesid ja hoidke nad avalikud.
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 x
ja y
.
Meetod | Eesmärk |
---|---|
Point2 () | algväärtustab koordinaadid nullidega |
Point2 (float nx, float ny) | parameetritega konstruktor – väärtustab koordinaadid |
Realiseerida funktsioon distanceFrom
ja operaator operator<<
. Kahe punkti vahelise kauguse valemit vt
https://opiobjektid.tptlive.ee/joonevorrandid/kahe_punkti_vaheline_kaugus.html
Meetod | Eesmärk |
---|---|
float distanceFrom (Point2 p) | tagastab punkti kauguse mingist teisest punktist tasandil |
operator << | väljastab punkti koordinaadid kujul (x, y) |
Failis geometrytest.cpp
on programmi testimiseks loodud kaks testi, proovi neid juurde luua.
2. Sirglõik
Loo klass Line2
(päisefail koos lähtekoodifailiga), mis kirjeldab sirglõiku kahe otspunkti p1
ja p2
abil.
Meetod | Eesmärk |
---|---|
Line2 () | vaikekonstruktor – loob tipud (Point2 vaikekonstruktoriga) |
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) |
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.
Meetod | Eesmärk |
---|---|
Circle2 () | vaikekonstruktor – loob punkti (0, 0) ja paneb raadiuseks nulli |
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) |
4. Kataloogistruktuuri järgiv Makefile
Korrigeeri faili Makefile
nii, et juurkataloogist käivitatav make test
kompileerib programmi.
Lahendus peab järgima korrektselt kataloogistruktuuri ning teek ja testrakendus tekivad
õigetesse kaustadesse.