且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

careercup-数学与概率

更新时间:2022-08-22 08:31:59

7.3 给定直角坐标系上的两条线,确定这两条线会不会相交。

解法:

此题有很多不确定的地方:两条线的格式是什么?两条线实为同一条怎么处理?这些含糊不清的地方***跟面试官讨论一下。

下面将做出以下假设:

若两条线是相同的(斜率和y轴截距相等),则认为这两条线相交;

两条线若不平行则必相交。因此,要检查两条线相交与否,我们只需检查两者的斜率是否相同,或是否为同一条。

 

实现代码:

#include<iostream>
#include<cmath>
using namespace std;

class line{
public:
    static  double epsilon;
    double slope;
    double yintercept;

    line(double s,double y):slope(s),yintercept(y){}
    bool intersect(line line2)
    {
        //满足两个条件一定相交,第一是斜率不相等,第二是斜率相等但是截距也相等
        return abs(slope-line2.slope)>epsilon||abs(yintercept-line2.yintercept)<epsilon;

    }
};
double line::epsilon=0.000001;
int main()
{
    line line1(1,2);
    line line2(1,2);
    cout<<line1.intersect(line2)<<endl;
}