您的位置:首页 > 其它

POJ 1269

2014-07-24 20:13 197 查看
中学的 又用上了。

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int x1,y1,x2,y2,x3,y3,x4,y4;
double k1,k2,k3,d1,d2;
double x,y;

bool asure(){
if(x1==x2||x3==x4){
if(x1==x2&&x3==x4&&x1==x3)
printf("LINE\n");
else if(x1==x2&&x3==x4&&x1!=x3)
printf("NONE\n");
else{
if(x1==x2){
k2=(y3-y4)*1.0/(x3-x4)*1.0;
d2=y3*1.0-k2*x3;
x=x1;
y=k2*x+d2;
}
else {
k1=(y1-y2)*1.0/(x1-x2)*1.0;
d1=y1*1.0-k1*x1;
x=x3;
y=k1*x+d1;
}
printf("POINT %0.2lf %0.2lf\n",x,y);
}
return true;
}
return false;
}

int main(){
int T;
while(scanf("%d",&T)!=EOF){
printf("INTERSECTING LINES OUTPUT\n");
while(T--){
scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
if(asure()) continue;
k1=(y1-y2)*1.0/(x1-x2)*1.0; k2=(y3-y4)*1.0/(x3-x4)*1.0;
if(k1==k2){
k3=(y2-y3)*1.0/(x2-x3)*1.0;
if(k1==k3){
printf("LINE\n");
}
else printf("NONE\n");
continue;
}
else {
d1=y1*1.0-k1*x1;
d2=y3*1.0-k2*x3;
y=(k2*d1-k1*d2)/(k2-k1);
x=(y-d1)*1.0/k1;
printf("POINT %0.2lf %0.2lf\n",x,y);
}
}
printf("END OF OUTPUT\n");
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: