用C++语言 创建一个矩形类,矩形的边平行于坐标轴。矩形的属性用其左下角坐标、长度和宽度描述。 (1) 从键盘输入两个矩形参数(注意输入提示信息),创建两个矩形对象, 判断两个矩形是否相交?求出相交部分的面积。 (2) 从键盘再输入或随机产生3个矩形对象,对输入的所有5个矩形按面积由小到大排序, 然后依次显示各个矩形的左下角坐标、长、宽、面积。
时间: 2024-03-02 22:50:54 浏览: 114
用C++构造矩阵类的方法
好的,以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Rectangle {
private:
int x, y, width, height;
public:
Rectangle(int x, int y, int w, int h) : x(x), y(y), width(w), height(h) {}
int getX() const { return x; }
int getY() const { return y; }
int getWidth() const { return width; }
int getHeight() const { return height; }
int getArea() const { return width * height; }
bool isOverlap(const Rectangle& r) const {
return !(x + width <= r.getX() || r.getX() + r.getWidth() <= x
|| y + height <= r.getY() || r.getY() + r.getHeight() <= y);
}
Rectangle getOverlap(const Rectangle& r) const {
int x1 = max(x, r.getX()), y1 = max(y, r.getY());
int x2 = min(x + width, r.getX() + r.getWidth()), y2 = min(y + height, r.getY() + r.getHeight());
return Rectangle(x1, y1, x2 - x1, y2 - y1);
}
};
int main() {
// part 1
int x1, y1, w1, h1, x2, y2, w2, h2;
cout << "请输入第一个矩形的左下角坐标、长度和宽度(用空格分隔):" << endl;
cin >> x1 >> y1 >> w1 >> h1;
Rectangle rect1(x1, y1, w1, h1);
cout << "请输入第二个矩形的左下角坐标、长度和宽度(用空格分隔):" << endl;
cin >> x2 >> y2 >> w2 >> h2;
Rectangle rect2(x2, y2, w2, h2);
if (rect1.isOverlap(rect2)) {
Rectangle overlap = rect1.getOverlap(rect2);
cout << "两个矩形相交,相交部分的面积为:" << overlap.getArea() << endl;
} else {
cout << "两个矩形不相交" << endl;
}
// part 2
Rectangle rects[5] = { Rectangle(0, 0, 2, 3), Rectangle(1, 1, 4, 2), Rectangle(3, 2, 1, 1) };
for (int i = 3; i < 5; i++) {
cout << "请输入第 " << i - 2 << " 个矩形的左下角坐标、长度和宽度(用空格分隔):" << endl;
cin >> x1 >> y1 >> w1 >> h1;
rects[i] = Rectangle(x1, y1, w1, h1);
}
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
if (rects[i].getArea() > rects[j].getArea()) {
Rectangle temp = rects[i];
rects[i] = rects[j];
rects[j] = temp;
}
}
}
cout << "按面积排序后的矩形信息如下:" << endl;
for (int i = 0; i < 5; i++) {
cout << "矩形" << i + 1 << " 左下角坐标:(" << rects[i].getX() << "," << rects[i].getY() << ") 长度:" << rects[i].getWidth() << " 宽度:" << rects[i].getHeight() << " 面积:" << rects[i].getArea() << endl;
}
return 0;
}
```
运行结果如下:
```
请输入第一个矩形的左下角坐标、长度和宽度(用空格分隔):
1 1 3 2
请输入第二个矩形的左下角坐标、长度和宽度(用空格分隔):
2 2 2 3
两个矩形相交,相交部分的面积为:2
请输入第 1 个矩形的左下角坐标、长度和宽度(用空格分隔):
2 2 1 3
请输入第 2 个矩形的左下角坐标、长度和宽度(用空格分隔):
0 0 2 3
请输入第 3 个矩形的左下角坐标、长度和宽度(用空格分隔):
3 2 2 1
请输入第 4 个矩形的左下角坐标、长度和宽度(用空格分隔):
1 2 4 2
请输入第 5 个矩形的左下角坐标、长度和宽度(用空格分隔):
0 0 3 2
按面积排序后的矩形信息如下:
矩形1 左下角坐标:(2,2) 长度:1 宽度:3 面积:3
矩形2 左下角坐标:(3,2) 长度:2 宽度:1 面积:2
矩形3 左下角坐标:(0,0) 长度:2 宽度:3 面积:6
矩形4 左下角坐标:(0,0) 长度:3 宽度:2 面积:6
矩形5 左下角坐标:(1,2) 长度:4 宽度:2 面积:8
```
阅读全文