2302_80771177 2024-04-29 15:27 采纳率: 96%
浏览 5
已结题

一个极其困难的C++问题求大家帮帮我

定义一个矩形类模板,使得坐标、周长和面积都可根据需要设定为整型、浮点型或双精度型等。数据成员为对角线两点的坐标:x1,y1,x2,y2均为整型。具有的功能是求周长、面积,还包含构造函数、设置值及读取值的成员函数。主函数中输入矩形对角线两点的坐标,输出周长和面积。

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-04-29 15:28
    关注
    让阿豪来帮你解答,本回答参考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
    

    其中,第一个矩形是整型类型,第二个矩形是双精度类型,测试了设置和读取矩形对角线两点坐标、求周长和面积的功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月14日
  • 已采纳回答 5月6日
  • 创建了问题 4月29日