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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка выбором. http://www.cyberforum.ru/cpp-beginners/thread293424.html
Здравствуйте! Помогите написать программу.. Осуществить программную реализацию сортировки информации заданного вида сбалансированным N-ленточным слиянием (в оперативной памяти) используя метод выбора. Количество лент - корень квадратный из количества элементов. Ключ char
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) Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк. Условия и ограничения: - натуральные числа. Массив:Z.
C++ Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк Помогите решить задачку (с помощью printf scanf) Найти в каждом столбце матрицы максимальный и минимальный элементы и вывести на печать в виде двух строк. Условия и ограничения: - натуральные числа. Массив:Z. подробнее

Показать сообщение отдельно
nick07x
2 / 2 / 0
Регистрация: 21.03.2011
Сообщений: 55
24.05.2011, 07:47  [ТС]
для 5 точек
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <math.h>
#include <cstdlib>
#include <iostream>
using namespace std;
 
typedef struct tagPoint
{
 double x;
 double y;
}Point, *pPoint;
 
#define LeftOriented  0
#define RightOriented 1
 
 
BOOL CheckOrientation(Point *first, Point *second)
{
 return (first->x*second->y - first->y*second->x)>0; 
}
 
BOOL CheckCollinear(Point *first, Point *second)
{
 return first->x*second->y == first->y*second->x;
}
 
void VectorSubstruct(Point *from, Point *to, Point *res)
{
 res->x = to->x - from->x;
 res->y = to->y - from->y;
}
 
int Check(Point *A, Point *B, Point *C, Point *X)
{
 Point AB, AX; 
 VectorSubstruct(A,B,&AB);
 VectorSubstruct(A,X,&AX);
 if (CheckCollinear(&AB,&AX))
  return 0;
 int orientAB_X = CheckOrientation(&AB,&AX);
  
 Point BC, BX;
 VectorSubstruct(B,C,&BC);
 VectorSubstruct(B,X,&BX);
 if (CheckCollinear(&BC,&BX))
  return 0;
 int orientBC_X = CheckOrientation(&BC,&BX);
  
 Point CA, CX;
 VectorSubstruct(C,A,&CA);
 VectorSubstruct(C,X,&CX);
 
 if (CheckCollinear(&CA,&CX))
  return 0;
 int orientCA_X = CheckOrientation(&CA,&CX);
 
 if (orientAB_X == orientBC_X && orientAB_X == orientCA_X)
  return 1;
 else
  return -1;
}
 
 
BOOL isTriangle(Point *P1, Point *P2, Point *P3)
{
 Point P12, P23; 
 
 if (P1->x == P2->x && P1->y == P2->y ||
   P2->x == P3->x && P2->y == P3->y ||
   P1->x == P3->x && P1->y == P3->y)
   return FALSE; 
 
 VectorSubstruct(P1,P2,&P12);
 VectorSubstruct(P2,P3,&P23);
 return (!CheckCollinear(&P12,&P23)); 
}
 
void main()
{
    setlocale(LC_ALL,"");
 const int N = 5;    
 int   i, j, k, m;   
 int   cOut, cIn;   
 Point   P1, P2, P3, P;  
 int   min, i1, i2, i3; 
int x1,x2,x3,x4,x5,y1,y2,y3,y4,y5;
cout<<"Введите координаты точек"<<endl;
cout<<"x1 = ";
cin>>x1;
cout<<"y1 = ";
cin>>y1;
cout<<"1 точка = "<<"("<<x1<<";"<<y1<<")"<<endl;
cout<<"x2 = ";
cin>>x2;
cout<<"y2 = ";
cin>>y2;
cout<<"2 точка = "<<"("<<x2<<";"<<y2<<")"<<endl;
cout<<"x3 = ";
cin>>x3;
cout<<"y3 = ";
cin>>y3;
cout<<"3 точка = "<<"("<<x3<<";"<<y3<<")"<<endl;
cout<<"x4 = ";
cin>>x4;
cout<<"y4 = ";
cin>>y4;
cout<<"4 точка = "<<"("<<x4<<";"<<y4<<")"<<endl;
cout<<"x5 = ";
cin>>x5;
cout<<"y5 = ";
cin>>y5;
cout<<"5 точка = "<<"("<<x5<<";"<<y5<<")"<<endl;
cout<<endl;
double array[2*N]={x1,y1,x2,y2,x3,y3,x4,y4,x5,y5};
 
 min = N;        
 for (i=0; i<N-2; i++)   
 {
  P1.x = array[i*2]; 
  P1.y = array[i*2+1];   
  for (j=i+1; j<N-1; j++)  
  {
   P2.x = array[j*2]; 
   P2.y = array[j*2+1];  
   for (k=j+1; k<N; k++) 
   {
    P3.x = array[k*2]; 
    P3.y = array[k*2+1];
    if (isTriangle(&P1, &P2, &P3)) 
    {
     cOut = cIn = 0; 
     for (m=0; m<N; m++) 
     {
      if (m!=i && m!=j && m!= k) 
      {
       P.x = array[m*2];
       P.y = array[m*2+1];  
       switch (Check(&P1, &P2, &P3, &P)) 
       {
        case -1:  
         cOut++;
         break;
        case 1:  
         cIn++;
       }    
      }
     }
     if (abs(cOut-cIn) < min) 
     {
      min = abs(cOut-cIn);  
      i1 = i;      
      i2 = j;
      i3 = k;
     }
    }
   }
  }
 }
 
 printf ("минимальная разность  = %d для точек %d, %d, %d", min, i1+1, i2+1, i3+1);
_getch();
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru