#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