Advertisement
CosmicFox33

prak 2.15

Feb 28th, 2022
860
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. using namespace std;
  4.  
  5. class point
  6. {
  7. private:
  8.     float x, y;
  9. public:
  10.     point(float X, float Y) { x = X, y = Y; } //конструктор
  11.     point() { x = 0., y = 0.; } //конструктор по умолчанию (когда не подается никаких нач значений)
  12.     float getx() { return x; }
  13.     float gety() { return y; }
  14.     void input() { cin >> x >> y; }
  15.     void output() { cout << "(" << x << ";" << y << ")\n"; }
  16.     ~point() { cout << "Point was deleted.\n"; } //деструктор (очищает память после использования переменной типа класса)
  17. };
  18. class ring
  19. {
  20. private:
  21.     float x0, y0, r1, r2;
  22. public:
  23.     ring(float X0, float Y0, float R1, float R2) { x0 = X0, y0 = Y0, r1 = min(R1, R2), r2 = max(R1, R2); }
  24.     ring() { x0 = 0., y0 = 0., r1 = 0., r2 = 0.; }
  25.     float getx() { return x0; }
  26.     float gety() { return y0; }
  27.     float getr1() { return r1; }
  28.     float getr2() { return r2; }
  29.     void input() { cin >> x0 >> y0 >> r1 >> r2; if (r1 > r2) swap(r1, r2); }
  30.     void output() { cout << "Center: (" << x0 << ";" << y0 << "), inner radius " << r1 << ", outer radius " << r2 << "\n"; }
  31.     ~ring() { cout << "Ring was deleted.\n"; }
  32.  
  33.     int p_in_r(point p)
  34.     {
  35.         float x, y, h;
  36.         x = p.getx();
  37.         y = p.gety();
  38.         h = sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0));
  39.         if (h <= r2 && h >= r1) return 1;
  40.         return 0;
  41.     }
  42. };
  43.  
  44. int f_p_in_r(point p, ring r)
  45. {
  46.     float x, y, x0, y0, h, r1, r2;
  47.     x = p.getx();
  48.     y = p.gety();
  49.     x0 = r.getx();
  50.     y0 = r.gety();
  51.     r1 = r.getr1();
  52.     r2 = r.getr2();
  53.     h = sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0));
  54.     if (h <= r2 && h >= r1) return 1;
  55.     return 0;
  56. }
  57.  
  58. int main()
  59. {
  60.     int res1, res2;
  61.     point A;
  62.     ring B;
  63.  
  64.     A.input();
  65.     B.input();
  66.     A.output();
  67.     B.output();
  68.     res1 = B.p_in_r(A);
  69.     res2 = f_p_in_r(A, B);
  70.  
  71.     if (res1) cout << "Point is in ring.\n";
  72.     else cout << "Point is not in ring.\n";
  73.     if (res2) cout << "Point is in ring.\n";
  74.     else cout << "Point is not in ring.\n";
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement