任务描述 定义一个表示点的结构类型Point和一个由直线方程y=ax+b确定的直线类Line。结构类型Point有两个成员x和y,分别表示点的横坐标和纵坐标。Line类有两个数据成员a和b,分别表示直线方程中的系数。 Line类有一个成员函数print用于显示直线方程。 友元函数setPoint(Line &l1, Line &l2)用于求两条直线的交点。在main函数中,建立两个直线对象,分别调用print函数显示两条直线的方程,并调用函数setPoint求这两条直线的交点。 输入包含多组数据,每组一行,包含直线l1和直线l2的a和b的值,中间以空格隔开。格式:a1 b1 a2 b2,假设都为int类型。 每组输出占3行,第一行为直线l1的方程,第二行为直线l2的方程,第三行为两直线的交点坐标(横纵坐标以空格隔开),如果没有交点,则输出"No intersection"(注意No后面有一个空格),交点坐标按int类型存储。 请注意末尾不需要输出空格。 样例输入: -6 -10 -7 -20 8 -27 8 54 0 7 7 0 样例输出: y = -6x - 10 y = -7x - 20 -10 50 y = 8x - 27 y = 8x + 54 No intersection y = 7 y = 7x 1 7 注意直线方程的输出格式:y@=@[mx]@[op]@[n],其中@表示一个空格,[]表示此项不一定输出,具体参考样例输出。用c++编程
时间: 2023-12-06 07:43:40 浏览: 70
```cpp
#include <iostream>
using namespace std;
struct Point {
int x, y;
};
class Line {
public:
int a, b;
Line(int a_, int b_) : a(a_), b(b_) {}
void print() {
cout << "y = " << a << "x ";
if (b > 0) cout << "+ " << b << endl;
else if (b < 0) cout << "- " << -b << endl;
else cout << endl;
}
friend void setPoint(Line &l1, Line &l2);
};
void setPoint(Line &l1, Line &l2) {
int x, y;
if (l1.a == l2.a) {
if (l1.b == l2.b) cout << "No intersection" << endl;
else cout << "Parallel lines" << endl;
return;
}
x = (l2.b - l1.b) / (l1.a - l2.a);
y = l1.a * x + l1.b;
cout << x << " " << y << endl;
}
int main() {
int a1, b1, a2, b2;
while (cin >> a1 >> b1 >> a2 >> b2) {
Line l1(a1, b1), l2(a2, b2);
l1.print();
l2.print();
setPoint(l1, l2);
}
return 0;
}
```
阅读全文