Hi, I try the cases in the forum and it is correct but i still reciving wa, what is wrong with this code?
Code: Select all
#include <iostream>
int main()
{
int n=0;
scanf("%d\n",&n);
printf("INTERSECTING LINES OUTPUT\n");
while(n>0)
{
n--;
double x1=0.0,y1=0.0,x2=0.0,y2=0.0,kx1=0.0,ky1=0.0,kx2=0.0,ky2=0.0;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf\n",&x1,&y1,&x2,&y2,&kx1,&ky1,&kx2,&ky2);
if(x1==x2)/**/
{
if(kx1==kx2)/**/
{
if(kx1==x1)/*LINE*/
printf("LINE\n");
else/*NONE*/
printf("NONE\n");
}
else if(ky1==ky2)/*POINT*/
{
double px=0.0,py=0.0;
px=x1;
py=ky1;
printf("POINT %.2lf %.2lf\n",px,py);
}
else/*POINT*/
{
double px=0.0,py=0.0, m2=(ky2-ky1)/(kx2-kx1);
px=x1;
py=m2*(px-kx1)+ky1;
printf("POINT %.2lf %.2lf\n",px,py);
}
}
else if(y1==y2)/**/
{
if(kx1==kx2)/*POINT*/
{
double px=0.0,py=0.0;
px=kx1;
py=y1;
printf("POINT %.2lf %.2lf\n",px,py);
}
else if(ky1==ky2)
{
if(ky1==y1)/*LINE*/
printf("LINE\n");
else/*NONE*/
printf("NONE\n");
}
else/*POINT*/
{
double px=0.0,py=0.0,m2=(ky2-ky1)/(kx2-kx1);
py=y1;
px=((py-ky1)/m2)+kx1;
printf("POINT %.2lf %.2lf\n",px,py);
}
}
else
{
if(kx1==kx2)/*POINT*/
{
double px=0.0,py=0.0, m1=(y2-y1)/(x2-x1);
px=kx1;
py=m1*(px-x1)+y1;
printf("POINT %.2lf %.2lf\n",px,py);
}
else if(ky1==ky2)/*POINT*/
{
double px=0.0,py=0.0,m1=(y2-y1)/(x2-x1);
py=ky1;
px=((py-y1)/m1)+x1;
printf("POINT %.2lf %.2lf\n",px,py);
}
else/**/
{
double m1=(y2-y1)/(x2-x1),m2=(ky2-ky1)/(kx2-kx1),testx1=5.0,testx2=1.0,testy1=0.0,testy2=0.0, testky1=0.0,testky2=0.0;
testy1=m1*(testx1-x1)+y1;
testy2=m1*(testx2-x1)+y1;
testky1=m2*(testx1-kx1)+ky1;
testky2=m2*(testx2-kx1)+ky1;
if(m1==m2&&testy1==testky1&&testy2==testky2)/*LINE*/
printf("LINE\n");
else if(m1==m2)/*NONE*/
printf("NONE\n");
else/*POINT*/
{
double px=0.0,py=0.0;
px=(x1*(y2*(kx1-kx2)-kx1*ky2+ky1*kx2)-x2*(y1*(kx1-kx2)-kx1*ky2+ky1*kx2))/(x1*(ky1-ky2)+y1*(kx2-kx1)+x2*(ky2-ky1)+y2*(kx1-kx2));
py=m1*(px-x1)+y1;
printf("POINT %.2lf %.2lf\n",px,py);
}
}
}
}
printf("END OF OUTPUT");
return 0;
}