Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- int N; // N - количество точек многоугольника
- int Xt, Yt;
- bool is_inside = true; // изначально считаем, что точка внутри многоугольника
- cout << "Вводите количество точек многоугольника: ";
- cin >> N;
- int X[N], Y[N]; // создание массивов с координатами точек многоугольника (X; Y)
- for (int i = 0; i < N; i++) {
- cin >> X[i] >> Y[i];
- }
- cout << "Введите координаты искомой точки: ";
- cin >> Xt >> Yt; // ввод координат искомой точки (Xt; Yt)
- // По условию точки не лежат на сторонах многоугольника
- for (int i = 0; i < N; i++) {
- int x1 = X[i], y1 = Y[i];
- int x2 = X[(i + 1) % N], y2 = Y[(i + 1) % N];
- int x_ch = X[(i + 2) % N], y_ch = Y[(i + 2) % N];
- // Вычисление коэффициентов
- int a = y1 - y2,
- b = x2 - x1, c = -1 * (a * x1 + b * y1);
- // Проверка на положение точки относительно стороны
- int pos = (a * Xt + b * Yt + c);
- int pos_checker = a * x_ch + b * y_ch + c;
- if ((pos < 0 and pos_checker > 0) or (pos > 0 and pos_checker < 0)) {
- is_inside = false;
- break;
- }
- }
- if (is_inside == true) {
- cout << "Точка находится внутри многоугольника";
- } else {
- cout << "Точка не находится внутри многоугольника";
- }
- return 0;
- }
- Начало каждого теста:
- 5
- -2 -4
- -5 -1
- -3 4
- 7 2
- 7 -2
- Тест №1
- -5 -3
- Тест №2
- -5 2
- Тест №3
- 4 3
- Тест №4
- 6 -3
- В тестах с 1 по 4
- Вывод: Точка не находится внутри многоугольника
- Тест №5
- -3 -2
- Тест №6
- -3 3
- Тест №7
- 5 2
- Тест №8
- 5 -2
- В тестах с 5 по 8
- Вывод: Точка находится внутри многоугольника
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement