poj 1269 Intersecting Lines

来源:互联网 发布:编程开发软件是什么 编辑:程序博客网 时间:2024/05/16 19:06
#include <iostream>#include <cstdio>#include <cmath>using namespace std;int pall(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){    double  a1=x2-x1,b1=y2-y1,a2=x4-x3,b2=y4-y3;    if(a1*b2==a2*b1)        return 1;    else return 0;}void point(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){    double a1 = y1 - y2;    double b1 = x2 - x1;    double c1 = x1*y2 - x2*y1;    double a2 = y3 - y4;    double b2 = x4 - x3;    double c2 = x3*y4 - x4*y3;    double x=(c1*b2-c2*b1)/(a2*b1-a1*b2);    double y=(a2*c1-a1*c2)/(a1*b2-a2*b1);    printf("%.2lf %.2lf\n",x,y);}double direction(double x1,double y1,double x2,double y2,double x3,double y3){    return    fabs((x2 - x1)*(y3 - y1) - (x3 - x1)*(y2 - y1));}int chong(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){    if(direction(x1,y1,x2,y2,x3,y3)<=0.000001&&direction(x1,y1,x2,y2,x4,y4)<=0.000001)        return 1;    else return 0;}int main(){    int n;    scanf("%d",&n);    double x1,y1,x2,y2,x3,y3,x4,y4;    printf("INTERSECTING LINES OUTPUT\n");    while(n--)    {        scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);        if(pall(x1,y1,x2,y2,x3,y3,x4,y4))        {            if(chong(x1,y1,x2,y2,x3,y3,x4,y4))                printf("LINE\n");            else printf("NONE\n");        }        else        {            printf("POINT ");            point(x1,y1,x2,y2,x3,y3,x4,y4);        }    }    printf("END OF OUTPUT\n");    return 0;}