Intersecting Lines ACM PKU http://acm.pku.cn/JudgeOnline/problem?id=1269

本文通过实例演示了自我解决问题在编程中的价值,并提供了求解两条直线相交问题的代码实现,强调了独立思考与实践的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己的问题自己解决了,凡事还得靠自己啊!
#include <iostream>
using namespace std;
int main ()
{
int n;
cin >>n;
double x1,x2,x3,x4,y1,y2,y3,y4;
double a[10][8];
for (int i=0;i<n;i++)
   for (int k=0;k<8;k++)
{
    cin>>a[i][k];

}
cout<<"INTERSECTING LINES OUTPUT"<<endl;
for (int m=0;m<n;m++)
{
   x1=a[m][0];y1=a[m][1];
   x2=a[m][2];y2=a[m][3];
   x3=a[m][4];y3=a[m][5];
   x4=a[m][6];y4=a[m][7];
   double X,Y;
   if (x1==x2&&x3!=x4)
   {
    X=x1;
    Y=((y4-y3)/(x4-x3))*(X-x3)+y3;
   }
   else if (x3==x4&&x1!=x2)
   {
    X=x3;
    Y=((y2-y1)/(x2-x1))*(X-x1)+y1;
   }
   else if((x1==x2)&&(x3==x4))

//之前我把这两种情况合在一起写的却怎么交也交不上,后来分开写才知道里面有情况没有考虑到啊!
   {
    if (x2==x3)
    {
           cout<<"LINE"<<endl;
            continue;
    }
    else 
    { 
     cout<<"NONE"<<endl;
            continue;            
    }

   }
   else if (((x1!=x2)&&(x3!=x4))&&(y4-y3)/(x4-x3)==(y2-y1)/(x2-x1))
   {
    if ((y4-y1)/(x4-x1)==(y3-y2)/(x3-x2))
    {
           cout<<"LINE"<<endl;
            continue;
    }
    else 
    { 
     cout<<"NONE"<<endl;
            continue;            
    }
   } 
   else if ((y4-y3)/(x4-x3)!=(y2-y1)/(x2-x1)) 
   {
    X=(y3-y1-((y4-y3)/(x4-x3))*x3+((y2-y1)/(x2-x1))*x1)/(((y2-y1)/(x2-x1))-((y4-y3)/(x4-x3)));
    Y=(((y4-y3)/(x4-x3))*y1-((y2-y1)/(x2-x1))*y3+((y2-y1)/(x2-x1))*((y4-y3)/(x4-x3))*x3-((y4-y3)/(x4-x3))*((y2-y1)/(x2-x1))*x1)/(((y4-y3)/(x4-x3))-((y2-y1)/(x2-x1)));
   }
    cout<<"POINT ";
    printf("%.2lf",X);
    cout<<" ";
    printf("%.2lf\n",Y);
} 
cout<<"END OF OUTPUT"<<endl;
return 0;
}

转载于:https://www.cnblogs.com/Chinese-Coder-Clarence/articles/2039321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值