Треугольник задан вершинами. Принадлежит ли заданная точка (x,y) указанному треугольнику? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику.

Решение задачи: «Треугольник задан вершинами. Принадлежит ли заданная точка (x,y) указанному треугольнику?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
float Dow(float ax,float ay,float bx,float by){
float Storona=pow((pow((ax-bx),2.0)+pow((ay-by),2.0)),1/2.);
return Storona;
}
 
float Plosha(float ax,float ay,float bx,float by,float cx,float cy){
float a=Dow(bx,by,cx,cy);
float b=Dow(ax,ay,cx,cy);
float c=Dow(ax,ay,bx,by);
float Pp=(a+b+c)/2;
float S=pow(Pp*(Pp-a)*(Pp-b)*(Pp-c),1/2.);
return S;
}
 
int Perev(float ax,float ay,float bx,float by,float cx,float cy,float dx,float dy){
float SV=Plosha(ax,ay,bx,by,cx,cy);
float S1=Plosha(ax,ay,bx,by,dx,dy);
float S2=Plosha(ax,ay,dx,dy,cx,cy);
float S3=Plosha(dx,dy,bx,by,cx,cy);
float Ss=S1+S2+S3;
Ss*=1000;
Ss=(int)Ss;
Ss/=1000.0;
if ((SV<Ss+0.01)&&(SV>Ss-0.01)) return 1;
else return 0;
}
 
int main()
{
int n,i,kilkist=0;
float ax,ay,bx,by,cx,cy,dx,dy;
// Vvedenia
//printf("S=%f",Plosha(1,1,3,2,3,3));
printf("Vvedit poparno koordinaty tochok cherez probil:\n");
printf("Vveditb koordunatu A:");
scanf("%f%f",&ax,&ay);
printf("Vveditb koordunatu B:");
scanf("%f%f",&bx,&by);
printf("Vveditb koordunatu C:");
scanf("%f%f",&cx,&cy);
//---------
printf("Vveditb kilkist tochok:");
scanf("%d",&n);
 
printf("Vvedit koordinaty tochok D:\n");
for(i=0;i<n;i++)
{ 
printf("Tochka %d: ",i+1);
scanf("%f",&dx); 
scanf("%f",&dy);
kilkist+=Perev(ax,ay,bx,by,cx,cy,dx,dy);
//printf("%i",kilkist);
}
printf("Kilkist=%i",kilkist);
//-------
//printf("%d",Perev(ax,ay,bx,by,cx,cy,dx[0],dy[0]));
return 0; 
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется функция Dow, которая вычисляет длину стороны треугольника по формуле полученной из теоремы Пифагора
  3. Определяется функция Plosha, которая вычисляет площадь треугольника по формуле Герона
  4. Определяется функция Perev, которая проверяет принадлежит ли заданная точка к треугольнику
  5. В функции main считываются координаты вершин треугольника и количество точек для проверки
  6. Задаются координаты точек для проверки
  7. Вызывается функция Perev для каждой точки проверки и суммируется результат
  8. Выводится общее количество точек, принадлежащих треугольнику

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы