Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Определить находится ли точка в площади треугольника - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка выбором. http://www.cyberforum.ru/cpp-beginners/thread293424.html
Здравствуйте! Помогите написать программу.. Осуществить программную реализацию сортировки информации заданного вида сбалансированным N-ленточным слиянием (в оперативной памяти) используя метод...
C++ Преобразование int в float Добрый день! int x = 20110511; double a = x; cout<<x<<' '<<a<<'\n'; Результат: 20110511 2.01105e+007 Число float состоит из 1 бита знака, 8 бит экспоненты и 23 бит мантиссы. http://www.cyberforum.ru/cpp-beginners/thread293379.html
как построить диаграмму на си++? C++
помогите построить диаграмму изменения координат точки в зависимости от высоты(h от 0до 1 , шаг 0.1)если x=10h.
C++ Расшифровка синтаксиса
есть код сlass Foo { public: Foo() : i(0) { std::cout << "CONSTRUCTED" << std::endl; } ~Foo()
C++ максимальный и минимальный элементы http://www.cyberforum.ru/cpp-beginners/thread293345.html
Решите пожалуйста задачу (с помощью printf scanf) Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк. Условия и ограничения: - натуральные...
C++ Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк Помогите решить задачку (с помощью printf scanf) Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк. Условия и ограничения: - натуральные числа.... подробнее

Показать сообщение отдельно
yekka
385 / 149 / 8
Регистрация: 12.05.2011
Сообщений: 450
24.05.2011, 10:42
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
 
const int n = 3; //Число вершин в треугольнике
 
struct point {  //Точка и координаты.
  double x;
  double y;
};
 
class line {  //Прямая, заданная уравнением F(x,y)=ax+by+c
  double a;
  double b;
  double c;
public:
  line(void) {};
  line(const point &, const point &);
  double F(point A) const;  //Подставляет координаты точки А в уравнение 
                            //и возвращает результат
};
 
line::line(const point & A, const point & B) {
  a = B.y - A.y;
  b = A.x - B.x;
  c = -(a*A.x + b*A.y);
}
 
double line::F(point A) const {
  return (a*A.x + b*A.y + c);
}
 
int main(void) {
  using std::cin;
  using std::cout;
 
  point points[n]; //Массив из точек-вершин треугольника
  cout << "Введите координаты точек:\n";
  for (int i = 0; i < n; ++i) {
    cin >> points[i].x >> points[i].y;
  }
  
  line lines[n]; //Массив прямых-ребер треугольника
  //Ребра создаются по соседним точкам.
  //Но последнее ребро должно создаваться по первой и последней точкам
  for (int i = 0; i < (n-1); ++i) {
    lines[i] = line(points[i], points[i+1]);
  }
  lines[n-1] = line(points[n-1], points[0]);
 
  //Проверяем, не лежат ли точки на одной прямой.
  if (lines[0].F(points[n-1]) == 0) {
    cout << "Точки лежат на одной прямой\n";
    return 0;
  }
  
  cout << "Введите координаты точки:\n";
  point D; //Точка, чью принадлежность треугольнику будем проверять
  while (cin >> D.x && cin >> D.y) {
    bool flag = false; //true - точка лежит вне треугольника и false - если нет
 
    //Проверяем, лежат ли точки C и D по одну сторону от прямой AB
    //В этом случае произведение должно быть положительным
    //или 0 - если D лежит на прямой AB
    if (lines[0].F(D)*lines[0].F(points[n-1]) < 0) {
      flag = true;
    }
    for (int i = 1; i < n; ++i) {
      if (lines[i].F(D)*lines[i].F(points[i-1]) < 0) 
        flag = true;
    }
 
    if (flag) {
      cout << "Точка лежит за пределами треугольника\n";
    } else {
      cout << "Точка лежит внутри треугольника\n";
    }
    
    cout << "Введите координаты точки:\n";
  }
 
  return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru