Треугольник задан вершинами. Принадлежит ли заданная точка (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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция Dow, которая вычисляет длину стороны треугольника по формуле полученной из теоремы Пифагора
- Определяется функция Plosha, которая вычисляет площадь треугольника по формуле Герона
- Определяется функция Perev, которая проверяет принадлежит ли заданная точка к треугольнику
- В функции main считываются координаты вершин треугольника и количество точек для проверки
- Задаются координаты точек для проверки
- Вызывается функция Perev для каждой точки проверки и суммируется результат
- Выводится общее количество точек, принадлежащих треугольнику
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д