|
Реализация на Pascal
var x,y,ax,ay,bx,by,cx,cy : real;
function St(ax,ay,bx,by,cx,cy : real):real;
begin
St:=abs((ax-bx)*(cy-by)-(ay-by)*(cx-bx))/2;
end;
function IsBelong(x,y,ax,ay,bx,by,cx,cy : real):boolean;
var s,s1,s2,s3 : real;
begin
s:=St(ax,ay,bx,by,cx,cy);
s1:=St(x,y,bx,by,cx,cy);
s2:=St(ax,ay,x,y,cx,cy);
s3:=St(ax,ay,bx,by,x,y);
IsBelong := abs(s-s1-s2-s3)<0.0001;
end;
begin
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
read(ax,ay,bx,by,cx,cy,x,y);
if IsBelong(x,y,ax,ay,bx,by,cx,cy) then write('In') else write('Out')
end.
|
Реализация на С++
#include <stdio.h>
#include <math.h>
double St(double ax, double ay, double bx, double by, double cx, double cy){
return fabs((ax-bx)*(cy-by)-(ay-by)*(cx-bx))/2;
}
int IsBelong(double x, double y, double ax, double ay, double bx, double by, double cx, double cy){
double s,s1,s2,s3;
s=St(ax,ay,bx,by,cx,cy);
s1=St(x,y,bx,by,cx,cy);
s2=St(ax,ay,x,y,cx,cy);
s3=St(ax,ay,bx,by,x,y);
return fabs(s-s1-s2-s3)<0.0001;
}
double x,y,ax,ay,bx,by,cx,cy;
int main (){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &ax, &ay, &bx, &by, &cx, &cy, &x, &y);
printf("%s",IsBelong(x,y,ax,ay,bx,by,cx,cy)?"In":"Out");
return 0;
}
|
| |