![]() |
#2
hahayezhe2010-09-17 09:10
|

#include<iostream>
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF) //输入四个坐标点,表示两条线段
{
if((y1-y2)/(x1-x2)==(y3-y4)/(x3-x4)&&(y1-y2)/(x1-x2)!=(y1-y4)/(x1-x4)) //判断两条线段的斜率是否相等,若相等且不重合说明不相交
{printf("no\n");}
else
{
if(((x1-x3)*(x2-x4)>0&&(x1-x4)*(x2-x3)>0)||((y1-y3)*(y2-y4)>0&&(y1-y4)*(y2-y3)>0)) //一条直线的两个横坐标或者纵坐标都在另一条直线的另一边的话说明不相交
{printf("no\n");}
else
{printf("yes\n");}
}
}
return 0;
}
using namespace std;
int main()
{
double x1,y1,x2,y2,x3,y3,x4,y4;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF) //输入四个坐标点,表示两条线段
{
if((y1-y2)/(x1-x2)==(y3-y4)/(x3-x4)&&(y1-y2)/(x1-x2)!=(y1-y4)/(x1-x4)) //判断两条线段的斜率是否相等,若相等且不重合说明不相交
{printf("no\n");}
else
{
if(((x1-x3)*(x2-x4)>0&&(x1-x4)*(x2-x3)>0)||((y1-y3)*(y2-y4)>0&&(y1-y4)*(y2-y3)>0)) //一条直线的两个横坐标或者纵坐标都在另一条直线的另一边的话说明不相交
{printf("no\n");}
else
{printf("yes\n");}
}
}
return 0;
}
[ 本帖最后由 hong900116 于 2010-9-22 02:28 编辑 ]