Код:
// aned.
// ЗАДАНИЕ: даны координаты треугольника ABC и точки P
// определить находится ли точка внутри треугольника
// АЛГОРИТМ: 1.строим треугольники с вершиной P
// 2.находим длины всех отрезков
// 3.находим углы с вершиной P
// 4.сумма углов должна равняться 2ПИ или 360 градусам
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
float X1,X2,X3,Y1,Y2,Y3; // координаты треугольника ABC
float X,Y; // координаты точки P
float AB,AC,BC; // длины отрезков треугольника ABC
float PA,PB,PC; // длины отрезков из точки P
float APB,APC,BPC; // углы у вершины P
int main()
{
setlocale(0,"");
cout<<"Введите X1 :";
cin>>X1;
cout<<"Введите Y1 :";
cin>>Y1;
cout<<"Введите X2 :";
cin>>X2;
cout<<"Введите Y2 :";
cin>>Y2;
cout<<"Введите X3 :";
cin>>X3;
cout<<"Введите Y3 :";
cin>>Y3;
cout<<"Введите X :";
cin>>X;
cout<<"Введите Y:";
cin>>Y;
AB=sqrt(pow((X1-X2),2)+pow((Y1-Y2),2));
AC=sqrt(pow((X1-X3),2)+pow((Y1-Y3),2));
BC=sqrt(pow((X2-X3),2)+pow((Y2-Y3),2));
// ----------------------------------------
PA=sqrt(pow((X-X1),2)+pow((Y-Y1),2));
PB=sqrt(pow((X-X2),2)+pow((Y-Y2),2));
PC=sqrt(pow((X-X3),2)+pow((Y-Y3),2));
cout<<endl<<AB<<endl<<AC<<endl<<BC<<endl;
cout<<endl<<PA<<endl<<PB<<endl<<PC<<endl;
// ----------------------------------------------
APB=acos((pow(PB,2)+pow(PA,2)-pow(AB,2))/(2*PA*PB));
APC=acos((pow(PC,2)+pow(PA,2)-pow(AC,2))/(2*PA*PC));
BPC=acos((pow(PB,2)+pow(PC,2)-pow(BC,2))/(2*PC*PB));
cout<<endl<<APB<<endl<<APC<<endl<<BPC<<endl;
// ----------------------------------------
double Summ=(APB+APC+BPC);// сумма углов у вершины P
cout<<endl<<Summ<<endl;
cout<<fixed; // оставляем два знака после запятой
cout<<setprecision(2);
cout<<endl<<Summ<<endl;
int Summ1=(Summ/2)*100; // приводим к int
cout<<endl<<Summ1<<endl;
// -----------------------------------
switch(Summ1)
{
case 314:
cout<<endl<<"YES!"<<endl;
break;
default :
cout<<endl<<"NO!"<<endl;
}
cin.get();
cin.get();
return 0;
}