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
.
Meetod | Eesmä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.
Meetod | Eesmä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.
Meetod | Eesmä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