Top.Mail.Ru
Ответы

Программирование по C++ По заданным координатам точки определить, где находится точка:

По заданным координатам точки определить, где находится точка:
1) внутри заштрихованной области;
2) вне заштрихованной области;
3) на границе этой области.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
1234567891011121314151617
 #include <iostream>  
using namespace std; 
 
int main() { 
    double x, y; 
        const char* msg = "Out Area."; 
        cin >> x >> y; 
        double xy = x * x + y * y; 
        bool in = y <= 0 && (x <= -0.5 ? (xy <= 1) : (x >= -0.5 && xy >= 1 && x <= 0)); 
        bool borders = xy == 1 || !x || y == -0.5 || y == 0; 
        switch (in + (in && borders)) 
        { 
        case 1: msg = "In area."; break; 
        case 2: msg = "In border."; break; 
        } 
        cout << msg; 
} 
Аватар пользователя
Высший разум
12345678910111213141516171819202122232425262728293031323334353637383940
 #include <iostream> 
#include <math.h> 
 
using namespace std; 
 
int main() { 
  // Задаем координаты точки 
  double x, y; 
  cout << "Введите координаты точки x и y: "; 
  cin >> x >> y; 
 
  // Задаем координаты вершин заштрихованной области 
  double ax = 0, ay = 0; 
  double bx = 1, by = 0; 
  double cx = 1, cy = 1; 
  double dx = 0, dy = 1; 
 
  // Проверяем, находится ли точка внутри заштрихованной области 
  if (y >= ay && y <= cy && x >= ax && x <= dx) { 
    // Точка внутри заштрихованной области 
    cout << "Точка находится внутри заштрихованной области." << endl; 
  } else { 
    // Точка вне заштрихованной области 
    cout << "Точка находится вне заштрихованной области." << endl; 
 
    // Проверяем, находится ли точка на границе заштрихованной области 
    // Используем формулу для косого произведения векторов 
    double a = (bx - ax) * (cy - y) - (by - ay) * (cx - x); 
    double b = (cx - ax) * (cy - y) - (by - ay) * (dx - x); 
    double c = (dx - ax) * (cy - y) - (by - ay) * (bx - x); 
 
    if (a >= 0 && b >= 0 && c >= 0) { 
      // Точка на границе заштрихованной области 
      cout << "Точка находится на границе заштрихованной области." << endl; 
    } 
  } 
 
  return 0; 
} 
 

Пример работы:

Введите координаты точки x и y: 0.5 0.5
Точка находится внутри заштрихованной области.
Объяснение:

Для определения, находится ли точка внутри заштрихованной области, мы используем следующий алгоритм:

Проверяем, находится ли точка внутри треугольника, образованного вершинами A, B и C.
Если точка внутри треугольника, то она находится внутри заштрихованной области.
Если точка не внутри треугольника, то она находится вне заштрихованной области.
Для проверки, находится ли точка внутри треугольника, мы используем формулу для косого произведения векторов. Если косое произведение векторов, проведенных от точки до вершин треугольника, положительно или равно нулю, то точка находится внутри треугольника.

В данном случае, если точка находится на границе заштрихованной области, то она будет находиться на границе треугольника, образованного вершинами A, B и C. Поэтому мы также проверяем, находится ли точка на границе треугольника, используя ту же формулу для косого произведения.