Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- using namespace std;
- class point
- {
- private:
- float x, y;
- public:
- point(float X, float Y) { x = X, y = Y; } //конструктор
- point() { x = 0., y = 0.; } //конструктор по умолчанию (когда не подается никаких нач значений)
- float getx() { return x; }
- float gety() { return y; }
- void input() { cin >> x >> y; }
- void output() { cout << "(" << x << ";" << y << ")\n"; }
- ~point() { cout << "Point was deleted.\n"; } //деструктор (очищает память после использования переменной типа класса)
- };
- class ring
- {
- private:
- float x0, y0, r1, r2;
- public:
- ring(float X0, float Y0, float R1, float R2) { x0 = X0, y0 = Y0, r1 = min(R1, R2), r2 = max(R1, R2); }
- ring() { x0 = 0., y0 = 0., r1 = 0., r2 = 0.; }
- float getx() { return x0; }
- float gety() { return y0; }
- float getr1() { return r1; }
- float getr2() { return r2; }
- void input() { cin >> x0 >> y0 >> r1 >> r2; if (r1 > r2) swap(r1, r2); }
- void output() { cout << "Center: (" << x0 << ";" << y0 << "), inner radius " << r1 << ", outer radius " << r2 << "\n"; }
- ~ring() { cout << "Ring was deleted.\n"; }
- int p_in_r(point p)
- {
- float x, y, h;
- x = p.getx();
- y = p.gety();
- h = sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0));
- if (h <= r2 && h >= r1) return 1;
- return 0;
- }
- };
- int f_p_in_r(point p, ring r)
- {
- float x, y, x0, y0, h, r1, r2;
- x = p.getx();
- y = p.gety();
- x0 = r.getx();
- y0 = r.gety();
- r1 = r.getr1();
- r2 = r.getr2();
- h = sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0));
- if (h <= r2 && h >= r1) return 1;
- return 0;
- }
- int main()
- {
- int res1, res2;
- point A;
- ring B;
- A.input();
- B.input();
- A.output();
- B.output();
- res1 = B.p_in_r(A);
- res2 = f_p_in_r(A, B);
- if (res1) cout << "Point is in ring.\n";
- else cout << "Point is not in ring.\n";
- if (res2) cout << "Point is in ring.\n";
- else cout << "Point is not in ring.\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement