POJ1269(模拟题)
http://poj.org/problem?id=1269
题意:输入两组点,一组两个,判断是不是平行,相交,重合;
AC代码(有点啰嗦但挺好理解):
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n; float x1,x2,x3,x4,y1,y2,y3,y4; float k1,k2,b1,b2,c1,c2; float x,y; int flag1,flag2; scanf("%d",&n); printf("INTERSECTING LINES OUTPUT\n"); while(n--) { flag1=0; flag2=0; scanf("%f%f%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); if(x1==x2) { c1=x1; flag1=1; } else { k1=(y1-y2)/(x1-x2); b1=y1-x1*k1; } if(x3==x4) { c2=x3; flag2=1; } else { k2=(y3-y4)/(x3-x4); b2=y3-x3*k2; } if(flag1==1&&flag2==1) { if(c1==c2) printf("LINE\n"); else printf("NONE\n"); } else if(flag1==1&&flag2==0) { x=c1; y=k2*x+b2; printf("POINT %.2f %.2f\n",x,y); } else if(flag1==0&&flag2==1) { x=c2; y=k1*x+b1; printf("POINT %.2f %.2f\n",x,y); } else { if(k1==k2&&b1==b2) printf("LINE\n"); else if(k1==k2&&b1!=b2) printf("NONE\n"); else { x=(b2-b1)/(k1-k2); y=k1*x+b1; printf("POINT %.2f %.2f\n",x,y); } } } printf("END OF OUTPUT\n"); return 0; }

浙公网安备 33010602011771号