注册 登录
编程论坛 C++教室

判断线段相交,哪里错了??

发布于 2010-09-17 01:46, 1108 次点击
程序代码:
#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;
}


[ 本帖最后由 hong900116 于 2010-9-22 02:28 编辑 ]
4 回复
#2
hahayezhe2010-09-17 09:10
....................
#3
南国利剑2010-09-17 15:56
我试过了。这个工程没有报错啊。
你是要问什么问题。
请把问题说明清楚。
#4
laoyang1032010-09-17 20:51
你确定 你的算法没问题,编译没问题,应该是你的算法的事吧
#5
2010-09-17 22:47
我也不知道是什么错误啊!!拿去OJ上提交老是提示Output Limit Exceed,所以想请教下到底是哪里错了??
1