Advertisement
Pr0nly

zad05

Nov 5th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. class point {
  7.     double tab[3];
  8. public:
  9.     point() { tab[0] = tab[1] = tab[2] = 0; }
  10.     point(const double(&t)[3]) {
  11.         tab[0] = t[0];
  12.         tab[1] = t[1];
  13.         tab[2] = t[2];
  14.     }
  15.     point(const double& x, const double& y, const double& z) {
  16.         tab[0] = x;
  17.         tab[1] = y;
  18.         tab[2] = z;
  19.     }
  20.     double& operator[](size_t i) {
  21.         return tab[i];
  22.     }
  23.     const double& operator[](size_t i)const {
  24.         return tab[i];
  25.     }
  26.     const double distance(const point& p) const {
  27.         double deltax = tab[0] - p[0];
  28.         double deltay = tab[1] - p[1];
  29.         double deltaz = tab[2] - p[2];
  30.  
  31.         return sqrt((deltax * deltax) + (deltay * deltay) + (deltaz * deltaz));
  32.     }
  33.     const point operator-(const point& pa) {
  34.         return point(tab[0] - pa[0], tab[1] - pa[1], tab[2] - pa[2]);
  35.     }
  36.     const point operator*(const double& pa)const {
  37.         return point(tab[0] * pa, tab[1] * pa, tab[2] * pa);
  38.     }
  39.     bool operator <(const point& pa) const {
  40.         return distance(point()) < pa.distance(point());
  41.     }
  42.     bool operator ==(const point& pa) const {
  43.         double eps = 1.0e-10;
  44.         return abs(distance(point())-pa.distance(point())) < eps ? true : false;
  45.     }
  46. };
  47. const point operator+(const point& la, const point& pa) {
  48.     return point(la[0] - pa[0], la[1] - pa[1], la[2] - pa[2]);
  49. }
  50. const point operator*(const double& la, const point& pa) {
  51.     return pa * la;
  52. }
  53.  
  54. ostream& operator<<(ostream& out, const point& p) {
  55.     return out << p[0] << " " << p[1] << " " << p[2]; //nie ma friend dlatego nie ma p.tab[1]
  56. }
  57. istream& operator>>(istream& in, point& p) {
  58.     in >> p[0] >> p[1] >> p[2];
  59.     return in;
  60. }
  61.  
  62. int main()
  63. {
  64.     double x[2][3] = { {1.0, 1.0, 1.0}, {1.0, 2.0, 3.0} };
  65.     point p1(x[0]), p2(x[1]);
  66.     const point p3(0.4, 0.2, 0.1);
  67.  
  68.     cout << p1 << ", " << p2 << '\n';
  69.     cout << p3[0] << ' ' << p3[1] << ' ' << p3[2] << '\n';
  70.     cout << p1.distance(point()) << ", " << p3.distance(p1) << '\n';
  71.     cout << p1 + p2 << '\n';
  72.     cout << p1.operator-(p3) << '\n';
  73.     cout << 3.14 * p2 << ", " << p2 * 3.14 << '\n';
  74.     cout << (p3 < p1) << endl;
  75.     cout << (p1 < p3) << ", " << (p1 == point(1.0, 1.0, 1.0)) << '\n';
  76.     cin >> p1;
  77.     cout << p1 << '\n';
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement