设计一个矩形类,实现矩形左上角和右下角坐标的输入和矩形面积的输出,如果输 入坐标不合理需重新输入,直到输入数据合理为止。
时间: 2024-09-20 09:14:05 浏览: 39
设计一个矩形类,我们可以考虑将矩形的两个关键点——左上角 `(x1, y1)` 和右下角 `(x2, y2)` 作为数据成员,并包含一个计算面积的方法。为了保证输入的合理性,我们需要提供一个验证输入是否有效的方法。下面是这个矩形类的一个基本实现:
```cpp
class Rectangle {
private:
double x1, y1, x2, y2; // 左上角和右下角坐标
public:
// 构造函数,检查输入的有效性并初始化矩形
Rectangle(double x1_in, double y1_in, double x2_in, double y2_in) {
setCoordinates(x1_in, y1_in, x2_in, y2_in);
}
// 设置坐标,如果输入不合理则循环提示用户重新输入
void setCoordinates(double x1_in, double y1_in, double x2_in, double y2_in) {
while (!isValidCoordinate(x1_in) || !isValidCoordinate(y1_in) ||
!isValidCoordinate(x2_in) || !isValidCoordinate(y2_in)) {
x1 = y1 = x2 = y2 = 0; // 清空已有的坐标
std::cout << "输入的坐标不合法,请重新输入左上角(x1, y1)和右下角(x2, y2):" << std::endl;
std::cin >> x1 >> y1 >> x2 >> y2;
}
this->x1 = x1; this->y1 = y1;
this->x2 = x2; this->y2 = y2;
}
// 矩形面积计算
double getArea() const {
return (x2 - x1) * (y2 - y1);
}
// 验证坐标是否合理(这里仅作示例,实际可根据需求调整)
bool isValidCoordinate(double coord) {
return coord >= 0; // 只作为一个简单例子,实际可能需要更复杂的边界条件判断
}
};
// 使用示例
Rectangle rect;
rect.setCoordinates(-1, 5, 10, 20);
std::cout << "矩形的面积是: " << rect.getArea() << std::endl;
```
在这个类中,`setCoordinates` 函数负责获取用户的输入并不断循环直至输入的数据满足有效性要求。`getArea` 方法用于计算并返回矩形的面积。
阅读全文