定义一个矩形类模板,使得坐标、周长和面积都可根据需要设定为整型、浮点型或双精度型等。数据成员为对角线两点的坐标:x1,y1,x2,y2均为整型。具有的功能是求周长、面积,还包含构造函数、设置值及读取值的成员函数。主函数中输入矩形对角线两点的坐标,输出周长和面积。
4条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
解答: 矩形类的定义如下:template <typename T> class Rectangle { private: T x1, y1, x2, y2; // 对角线两点的坐标 public: Rectangle(); // 默认构造函数 Rectangle(T _x1, T _y1, T _x2, T _y2); // 带参构造函数 void setPoints(T _x1, T _y1, T _x2, T _y2); // 设置矩形对角线两点坐标 void getPoints(T& _x1, T& _y1, T& _x2, T& _y2) const; // 读取矩形对角线两点坐标 T perimeter() const; // 求矩形周长 T area() const; // 求矩形面积 }; template <typename T> Rectangle<T>::Rectangle() {} template <typename T> Rectangle<T>::Rectangle(T _x1, T _y1, T _x2, T _y2) { x1 = _x1; y1 = _y1; x2 = _x2; y2 = _y2; } template <typename T> void Rectangle<T>::setPoints(T _x1, T _y1, T _x2, T _y2) { x1 = _x1; y1 = _y1; x2 = _x2; y2 = _y2; } template <typename T> void Rectangle<T>::getPoints(T& _x1, T& _y1, T& _x2, T& _y2) const { _x1 = x1; _y1 = y1; _x2 = x2; _y2 = y2; } template <typename T> T Rectangle<T>::perimeter() const { T width = abs(x1 - x2); T height = abs(y1 - y2); return (width + height) * 2; } template <typename T> T Rectangle<T>::area() const { T width = abs(x1 - x2); T height = abs(y1 - y2); return width * height; }主函数对矩形类进行使用和测试:
int main() { Rectangle<int> r1(0, 0, 5, 5); int x1, y1, x2, y2; r1.getPoints(x1, y1, x2, y2); // 获取对角线两点坐标 cout << "Rectangle 1:" << endl; cout << "Perimeter: " << r1.perimeter() << endl; cout << "Area: " << r1.area() << endl; Rectangle<double> r2; r2.setPoints(-1.5, -1.5, -1.0, 2.0); // 设置对角线两点坐标 cout << "Rectangle 2:" << endl; cout << "Perimeter: " << r2.perimeter() << endl; cout << "Area: " << r2.area() << endl; return 0; }输出结果如下:
Rectangle 1: Perimeter: 20 Area: 25 Rectangle 2: Perimeter: 9 Area: 2.5其中,第一个矩形是整型类型,第二个矩形是双精度类型,测试了设置和读取矩形对角线两点坐标、求周长和面积的功能。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报