首页 > 代码库 > POJ 1269

POJ 1269

中学的 又用上了。

 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4  5 using namespace std; 6  7 int x1,y1,x2,y2,x3,y3,x4,y4; 8 double k1,k2,k3,d1,d2; 9 double x,y;10 11 bool asure(){12     if(x1==x2||x3==x4){13         if(x1==x2&&x3==x4&&x1==x3)14         printf("LINE\n");15         else if(x1==x2&&x3==x4&&x1!=x3)16         printf("NONE\n");17         else{18             if(x1==x2){19                 k2=(y3-y4)*1.0/(x3-x4)*1.0;20                 d2=y3*1.0-k2*x3;21                 x=x1;22                 y=k2*x+d2;23             }24             else {25                 k1=(y1-y2)*1.0/(x1-x2)*1.0;26                 d1=y1*1.0-k1*x1;27                 x=x3;28                 y=k1*x+d1;29             }30             printf("POINT %0.2lf %0.2lf\n",x,y);31         }32         return true;33     }34     return false;35 }36 37 38 int main(){39     int T;40     while(scanf("%d",&T)!=EOF){41         printf("INTERSECTING LINES OUTPUT\n");42         while(T--){43             scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);44             if(asure()) continue;45             k1=(y1-y2)*1.0/(x1-x2)*1.0; k2=(y3-y4)*1.0/(x3-x4)*1.0;46             if(k1==k2){47                 k3=(y2-y3)*1.0/(x2-x3)*1.0;48                 if(k1==k3){49                     printf("LINE\n");50                 }51                 else printf("NONE\n");52                 continue;53             }54             else {55                 d1=y1*1.0-k1*x1;56                 d2=y3*1.0-k2*x3;57                 y=(k2*d1-k1*d2)/(k2-k1);58                 x=(y-d1)*1.0/k1;59                 printf("POINT %0.2lf %0.2lf\n",x,y);60             }61         }62         printf("END OF OUTPUT\n");63     }64     return 0;65 }
View Code