Pasta: a9355c94b385bd22bb80e6a7bbe7270359e0a5bb (2017-11-28)

Język: Text
Adres: p43.pl/p,a9355c94b385bd22bb80e6a7bbe7270359e0a5bb
Ilość linii: 138
Rozmiar: 2.15 kB
Wyświetleń: 17
Ostatnio użyto: 2018-01-20 05:34:27
#include <iostream> #include <cmath> using namespace std; class punkt { double X,Y; public: punkt() : X(0), Y(0) {} punkt(const double & x, const double & y) : X(x), Y(y) {} double &x() { return X; } const double x() const { return X; } double &y() { return Y; } const double y() const { return Y; } const double odleglosc(const punkt &p) const { return(sqrt( (X-p.x())*(X-p.x()) + (Y-p.y())*(Y-p.y()) )); } }; class wielobok { unsigned roz; punkt * wsk; public: wielobok() : wsk(0), roz(0) {} wielobok(const punkt * a, const punkt * b) : roz(b-a), wsk(roz ? new punkt[roz] : 0) { for (unsigned i=0; i<roz; i++) wsk[i]=a[i]; } punkt & Punkt(const unsigned & a) { return(wsk[a]); } const double obwod() const { double wynik = 0; for(unsigned i=0; i<roz-1; i++) wynik += wsk[i].odleglosc(wsk[i+1]); wynik += wsk[roz-1].odleglosc(wsk[0]); return(wynik); } wielobok Punkty(const punkt * a, const punkt * b) { roz = b-a; wsk=(roz ? new punkt[roz] : 0); for(unsigned i=0; i<roz; i++) wsk[i] = a[i]; } unsigned ilosc() { return roz; } ~wielobok() { delete [] wsk; } }; int main() { punkt p(2, 3); cout << p.x() << ' ' << p.y() << '\n'; p.x() = 1; p.y() = 1; cout << p.x() << ' ' << p.y() << '\n'; cout << p.odleglosc(punkt()) << '\n'; punkt t[] = { punkt(0, 2), punkt(0, 0), punkt(2, 0), punkt(2, 2) }; wielobok w1(t, t+4); cout << w1.obwod() << '\n'; w1.Punkt(0) = punkt(0,1); w1.Punkt(2) = punkt(1,0); w1.Punkt(3) = punkt(1,1); cout << w1.obwod() << '\n'; wielobok w2; w2.Punkty(t, t+3); cout << w2.obwod() << '\n'; for (int i = 0; i < w2.ilosc(); ++i) cout << w2.Punkt(i).x() << ' ' << w2.Punkt(i).y() << '\n'; }