用cpp编写:定义一个点Point类,有点坐标属性(x, y),再定义一个矩形Rectangle类,其属性为两个Point点(分别表示矩形对角线上两点的坐标),及含有计算矩形的周长及面积的成员函数;再编写两个Point类的友元函数,分别计算两个点组成的矩形的周长与面积。在主函数中进行测试。
时间: 2024-03-27 16:38:45 浏览: 43
定义一个名为rectangle 的矩形类,其属性数据为矩形左上角和右上角的点的坐标能计算矩形的面积
5星 · 资源好评率100%
好的,下面是代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
public:
Point(double x = 0, double y = 0): x(x), y(y) {}
double getX() const { return x; }
double getY() const { return y; }
private:
double x, y;
};
class Rectangle {
public:
Rectangle(Point p1, Point p2): p1(p1), p2(p2) {}
double getLength() const { return fabs(p1.getX() - p2.getX()); }
double getWidth() const { return fabs(p1.getY() - p2.getY()); }
double getPerimeter() const { return 2 * (getLength() + getWidth()); }
double getArea() const { return getLength() * getWidth(); }
private:
Point p1, p2;
};
// 友元函数
double getLength(const Point& A, const Point& B) {
return fabs(A.getX() - B.getX());
}
double getWidth(const Point& A, const Point& B) {
return fabs(A.getY() - B.getY());
}
int main() {
Point A(1, 1), B(3, 4);
Rectangle rect(A, B);
cout << "The perimeter of the rectangle is: " << rect.getPerimeter() << endl;
cout << "The area of the rectangle is: " << rect.getArea() << endl;
cout << "The perimeter of the rectangle formed by A and B is: " << 2 * (getLength(A, B) + getWidth(A, B)) << endl;
cout << "The area of the rectangle formed by A and B is: " << getLength(A, B) * getWidth(A, B) << endl;
return 0;
}
```
在这个代码中,我们首先定义了一个点类 Point,有坐标属性 x 和 y,然后定义了一个矩形类 Rectangle,其属性为两个 Point 对象,表示矩形的对角线上两个点的坐标。在矩形类中,我们定义了计算矩形周长和面积的成员函数。
接下来,我们又定义了两个 Point 类的友元函数,分别计算两个点组成的矩形的周长和面积。
最后,在主函数中,我们创建一个点 A 和 B,然后用它们创建一个矩形 rect,并输出矩形的周长和面积。然后,我们再调用两个友元函数,计算出由 A 和 B 组成的矩形的周长和面积,并输出结果。
阅读全文