创建一个矩形类,矩形的边平行于坐标轴。矩形的属性用其左下角坐标、长度和宽度描述。 (1) 从键盘输入两个矩形参数(注意输入提示信息),创建两个矩形对象, 判断两个矩形是否相交?求出相交部分的面积。 (2) 从键盘再输入或随机产生3个矩形对象,对输入的所有5个矩形按面积由小到大排序, 然后依次显示各个矩形的左下角坐标、长、宽、面积。
时间: 2024-03-02 21:49:45 浏览: 99
定义一个名为rectangle 的矩形类,其属性数据为矩形左上角和右上角的点的坐标能计算矩形的面积
5星 · 资源好评率100%
好的,以下是C++代码实现:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Rectangle {
private:
double x; // 左下角横坐标
double y; // 左下角纵坐标
double w; // 矩形宽度
double h; // 矩形高度
public:
void set(double xx, double yy, double ww, double hh) {
x = xx;
y = yy;
w = ww;
h = hh;
}
double getX() {
return x;
}
double getY() {
return y;
}
double getW() {
return w;
}
double getH() {
return h;
}
double getArea() {
return w * h;
}
bool isOverlap(Rectangle r) {
if (x + w <= r.x || r.x + r.w <= x || y + h <= r.y || r.y + r.h <= y)
return false;
return true;
}
double overlapArea(Rectangle r) {
double dx = min(x + w, r.x + r.w) - max(x, r.x);
double dy = min(y + h, r.y + r.h) - max(y, r.y);
return dx * dy;
}
bool operator<(const Rectangle &r) const {
return getArea() < r.getArea();
}
};
int main() {
vector<Rectangle> rectangles;
double x, y, w, h;
for (int i = 0; i < 5; i++) {
Rectangle r;
cout << "请输入第" << i+1 << "个矩形的左下角横坐标、纵坐标、宽度、高度:" << endl;
cin >> x >> y >> w >> h;
r.set(x, y, w, h);
rectangles.push_back(r);
}
sort(rectangles.begin(), rectangles.end());
for (int i = 0; i < 5; i++) {
Rectangle r = rectangles[i];
cout << "第" << i+1 << "个矩形的左下角坐标为(" << r.getX() << ", " << r.getY() << "),长为" << r.getW() << ",宽为" << r.getH() << ",面积为" << r.getArea() << endl;
}
return 0;
}
```
在程序中,我们首先创建了一个Rectangle类来表示矩形,包含了矩形的左下角坐标、宽度和高度等属性,还有判断两个矩形是否相交、求相交部分面积等方法。在主函数中,首先使用一个vector容器存储5个矩形对象,并按照面积从小到大进行排序。然后依次输出每个矩形的左下角坐标、长、宽、面积。排序使用了C++标准库中的sort函数,使用了Rectangle类的重载运算符<来实现按面积排序。
阅读全文