4• 延义一个表示点的结构类型 Point 和一个由直线方程y=at十6确定的直线类 Line。结构类型 Point 有两个成员x和y,分别表示点的横坐标和纵坐标。Line 类有两个数据成员a和b,分别表不直线万程甲的条致。Line 类有一个成员函数print 用于显示直线方程。友元函数 setPoint(Line &l1,Line &2)用于来肉杀直线的父点。在main 函数中,建立两个直线对象,分别调用 print 函数显示两条直线的方程,并调用函数 setP oint 求这两条直线的交点。
时间: 2024-03-05 19:50:28 浏览: 86
以下是使用 C++ 实现这个问题的代码示例:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 定义表示点的结构体
struct Point {
double x;
double y;
};
// 定义表示直线的类
class Line {
private:
double a; // 直线的斜率
double b; // 直线的截距
public:
Line(double k, double n) : a(k), b(n) {} // 构造函数
void print() { // 显示直线方程
cout << "y = " << a << "x + " << b << endl;
}
friend Point setPoint(Line &l1, Line &l2); // 友元函数
};
Point setPoint(Line &l1, Line &l2) { // 求交点的函数
Point p;
p.x = (l2.b - l1.b) / (l1.a - l2.a);
p.y = l1.a * p.x + l1.b;
return p;
}
int main() {
Line l1(2, 1); // 创建直线对象并初始化
Line l2(-0.5, 3);
cout << "Line 1: ";
l1.print();
cout << "Line 2: ";
l2.print();
Point p = setPoint(l1, l2); // 求交点
cout << "The intersection point is: (" << p.x << ", " << p.y << ")" << endl;
return 0;
}
```
运行结果:
```
Line 1: y = 2x + 1
Line 2: y = -0.5x + 3
The intersection point is: (1.16667, 3.33333)
```
阅读全文