定义一个Myline类,记录两条线段,第一(二)行输出第一(二)条线段的长度(保留两位小数)并判断线段是否与x或y轴相交(相交输出1,否则为0)
第三行输出两线段斜率是否相等(相交为1,否则为0)
#include<iostream>
#include <iomanip>
#include<cmath>
using namespace std;
class point {
public:
int x;
int y;
};
class Myline {
public:
point e1, e2;
double length(point e1, point e2);
bool mixs(point e1, point e2);
Myline(point, point);
friend bool equal(Myline, Myline);
};
double Myline::length(point e1, point e2) {
return sqrt(pow(float(e1.x - e2.x), 2) + pow(float(e1.y - e2.y), 2));
}
bool Myline::mixs(point e1, point e2) {
return (e1.x * e2.x <= 0 || e1.y * e2.y <= 0);
}
Myline::Myline(point p1, point p2) {
e1 = p1;
e2 = p2;
}
bool equal(Myline l1, Myline l2) {
return((l1.e1.x - l1.e2.x) * (l2.e1.y - l2.e2.y) == (l1.e1.y - l1.e2.y) * (l2.e1.x - l2.e2.x));
}
int main() {
point p1, p2, p3, p4;
cin >> p1.x >> p1.y >> p2.x >> p2.y;
cin >> p3.x >> p3.y >> p4.x >> p4.y;
Myline L1(p1, p2), L2(p3, p4);
cout << fixed << setprecision(2) << L1.length(p1, p2);
cout << " " << L1.mixs(p1, p2);
cout << endl;
cout << fixed << setprecision(2) << L2.length(p3, p4);
cout << " " << L2.mixs(p3, p4);
cout << endl;
cout << equal(L1, L2);
return 0;
}