Advertisement
Guest User

3

a guest
Nov 20th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. class punkt
  7. {
  8.     double X,Y;
  9.  
  10.  
  11. public:
  12.  
  13.     punkt() : X(0), Y(0) {}
  14.  
  15.     punkt(const double & x, const double & y) : X(x), Y(y) {}
  16.  
  17.  
  18.     double &x()
  19.     {
  20.         return X;
  21.     }
  22.  
  23.  
  24.     const double x() const
  25.     {
  26.         return X;
  27.     }
  28.  
  29.  
  30.     double &y()
  31.     {
  32.         return Y;
  33.     }
  34.  
  35.  
  36.     const double y() const
  37.     {
  38.         return Y;
  39.     }
  40.  
  41.  
  42.     const double odleglosc(const punkt &p) const
  43.     {
  44.         return(sqrt( (X-p.x())*(X-p.x())  +  (Y-p.y())*(Y-p.y()) ));
  45.     }
  46.  
  47. };
  48.  
  49.  
  50. class wielobok
  51. {
  52.     unsigned roz;
  53.     punkt * wsk;
  54.  
  55.  
  56. public:
  57.  
  58.     wielobok() : wsk(0), roz(0) {}
  59.  
  60.     wielobok(const punkt * a, const punkt * b) :
  61.         roz(b-a), wsk(roz ? new punkt[roz] : 0)
  62.     {
  63.         for (unsigned i=0; i<roz; i++)
  64.             wsk[i]=a[i];
  65.     }
  66.  
  67.  
  68.     punkt & Punkt(const unsigned & a)
  69.     {
  70.         return(wsk[a]);
  71.     }
  72.  
  73.  
  74.     const double obwod() const
  75.     {
  76.         double wynik = 0;
  77.  
  78.         for(unsigned i=0; i<roz-1; i++)
  79.             wynik += wsk[i].odleglosc(wsk[i+1]);
  80.  
  81.         wynik += wsk[roz-1].odleglosc(wsk[0]);
  82.  
  83.         return(wynik);
  84.     }
  85.  
  86.     wielobok Punkty(const punkt * a, const punkt * b)
  87.     {
  88.         roz = b-a;
  89.         wsk=(roz ? new punkt[roz] : 0);
  90.  
  91.         for(unsigned i=0; i<roz; i++)
  92.             wsk[i] = a[i];
  93.     }
  94.  
  95.     unsigned ilosc()
  96.     {
  97.         return roz;
  98.     }
  99.  
  100.     ~wielobok()
  101.     {
  102.         delete [] wsk;
  103.     }
  104. };
  105.  
  106.  
  107.  
  108.  
  109. int main()
  110. {
  111.     punkt p(2, 3);
  112.     cout << p.x() << ' ' << p.y() << '\n';
  113.     p.x() = 1;
  114.     p.y() = 1;
  115.     cout << p.x() << ' ' << p.y() << '\n';
  116.     cout << p.odleglosc(punkt()) << '\n';
  117.  
  118.     punkt t[] = { punkt(0, 2), punkt(0, 0), punkt(2, 0), punkt(2, 2) };
  119.  
  120.     wielobok w1(t, t+4);
  121.  
  122.     cout << w1.obwod() << '\n';
  123.  
  124.     w1.Punkt(0) = punkt(0,1);
  125.     w1.Punkt(2) = punkt(1,0);
  126.     w1.Punkt(3) = punkt(1,1);
  127.  
  128.     cout << w1.obwod() << '\n';
  129.  
  130.  
  131.     wielobok w2;
  132.     w2.Punkty(t, t+3);
  133.     cout << w2.obwod() << '\n';
  134.  
  135.     for (int i = 0; i < w2.ilosc(); ++i)
  136.         cout << w2.Punkt(i).x() << ' ' << w2.Punkt(i).y() << '\n';
  137.  
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement