您的位置:首页 > 其它

poj 1269

2014-08-06 15:01 239 查看
#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;

struct point

{

    double x;

    double y;//这里要用double

};

point Intersection(point u1,point u2,point v1,point v2)//求出交点坐标

{
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;

}

int main()

{

    point k1,k2,k3,k4;

    int t;

    int q=1;

    scanf("%d",&t);

    while(t--)

    {

       scanf("%lf%lf",&k1.x,&k1.y);

        scanf("%lf%lf",&k2.x,&k2.y);

        scanf("%lf%lf",&k3.x,&k3.y);

        scanf("%lf%lf",&k4.x,&k4.y);

        if(q==1)

        printf("INTERSECTING LINES OUTPUT\n");

        double num1,num2;

        if(k2.x-k1.x==0&&k4.x-k3.x==0)

        {

            if(k1.x==k3.x)//这里是x,不是y,这里WA了几遍

            {

                printf("LINE\n");//重合

            }

            else

            {

                printf("NONE\n");//平行

            }

        }

      else   if(k2.x-k1.x==0&&k4.x-k3.x!=0)

      {

           point ans=Intersection(k1,k2,k3,k4);

             printf("POINT %.2lf %.2lf\n",ans.x,ans.y);

      }

      else if(k2.x-k1.x!=0&&k4.x-k3.x==0)

      {

          point ans=Intersection(k1,k2,k3,k4);

             printf("POINT %.2lf %.2lf\n",ans.x,ans.y);

      }

      else if(k2.x-k1.x!=0&&k4.x-k3.x!=0)

      {

          num1=(k2.y-k1.y)/(k2.x-k1.x);

        num2=(k4.y-k3.y)/(k4.x-k3.x);

        if(num1==num2)

        {

            double b1=k1.y-num1*k1.x;

            double b2=k3.y-num1*k3.x;

            if(b1==b2)

            //if(/*ans1.x>=-1000.0&&ans1.x<=1000.0&&ans1.y>=-1000.0&&ans1.y<1000.0*/)

            {

                printf("LINE\n");//重合

            }

            else

            {

                printf("NONE\n");//平行

                // printf("~~~~~~~~~\n");

            }

        }

        else

        {

             point ans=Intersection(k1,k2,k3,k4);

             printf("POINT %.2lf %.2lf\n",ans.x,ans.y);

        }

      }

       if(t==0)

            printf("END OF OUTPUT\n");

        q++;

    }

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