www.pudn.com > zju_1000_1010.rar > 1010.CPP
#include#include struct point { double x,y; }; struct line { point a,b; }; double cal_area(point polygon[],int n) { double area=0; area=polygon[0].y*(polygon[n-1].x-polygon[1].x); for(int i=1;i b)?a:b); } double min(double a,double b) { return ((a>b)?b:a); } double multiply(point fir,point sec,point thi) { return ((fir.x-thi.x)*(sec.y-thi.y)-(sec.x-thi.x)*(fir.y-thi.y)); } int intersect(line fir,line sec) { return ((max(fir.a.x,fir.b.x)>=min(sec.a.x,sec.b.x))&& (max(fir.a.y,fir.b.y)>=min(sec.a.y,sec.b.y))&& (max(sec.a.x,sec.b.x)>=min(fir.a.x,fir.b.x))&& (max(sec.a.y,sec.b.y)>=min(fir.a.y,fir.b.y))&& (multiply(fir.a,sec.a,sec.b)*multiply(sec.a,fir.b,sec.b)>=0)&& (multiply(sec.b,fir.a,fir.b)*multiply(fir.a,sec.a,fir.b)>=0) ); } int is_possible(point polygon[],int n) { int i,j; for(i=0;i >n; if(n==0) break; if(flag) cout< >polygon[i].x>>polygon[i].y; cout<<"Figure "<