V.IKN 2022-04-22 13:09 采纳率: 100%
浏览 18
已结题

100%采纳,求模板内容(关键词-class)

定义一个矩形类,数据成员为左上角和右下角两点的坐标:x1,y1,x2,y2,均为整数。类成员函数具有的功能求周长、面积,还包括构造函数、设置值及读取值的成员函数。主函数输入矩形左上角、右下角两组坐标值,输出周长和面积。


class CRectangle
{
public:
    CRectangle();
    CRectangle(double,double,double,double); //构造函数,设定矩形坐标初始值;
    void setRectangle(double,double,double,double); 
    // 函数形参:值传递。语句调用。
    void readRectangle(double*,double*,double*,double*); //函数形参,地址传递,语句调用。
    double findArea(){
        return fabs(x2-x1)*fabs(y2-y1);
    }
    double findPerimeter(){
        return 2*(fabs(x2-x1)+fabs(y2-y1));
    }
    private:
    double x1,y1,x2,y2; //矩形左上角和右下角两组坐标,私有数据,只有类中函数访问。
};
CRectangle::CRectangle(){}
CRectangle::CRectangle(double xl,double yl,double xr,double yr){
    x1=xl;y1=yl;x2=xr;y2=yr;
}
void CRectangle::setRectangle(double xl,double yl,double xr,double yr){
    x1=xl;y1=yl;x2=xr;y2=yr;
}
void CRectangle::readRectangle(double* xl,double* yl,double* xr,double* yr){
    *xl=x1;*yl=y1;*xr=x2;*yr=y2;
}
  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-22 16:33
    关注
    #include <iostream>
    #include <cmath>
    using namespace std;
     
    template<class T>
    class CRectangle
    {
    public:
        CRectangle();
        CRectangle(T,T,T,T); //构造函数,设定矩形坐标初始值;
        void setRectangle(T,T,T,T); 
        // 函数形参:值传递。语句调用。
        void readRectangle(T*,T*,T*,T*); //函数形参,地址传递,语句调用。
        T findArea(){
            return fabs(x2-x1)*fabs(y2-y1);
        }
        T findPerimeter(){
            return 2*(fabs(x2-x1)+fabs(y2-y1));
        }
        private:
        T x1,y1,x2,y2; //矩形左上角和右下角两组坐标,私有数据,只有类中函数访问。
    };
     
    
    template<class T>
    CRectangle<T>::CRectangle(void){x1=0;y1=0;x2=0;y2 = 0;}
     
    template<class T>
    CRectangle<T>::CRectangle(T xl,T yl,T xr,T yr){
        x1=xl;y1=yl;x2=xr;y2=yr;
    }
     
    template<class T>
    void CRectangle<T>::setRectangle(T xl,T yl,T xr,T yr){
        x1=xl;y1=yl;x2=xr;y2=yr;
    }
     
    template<class T>
    void CRectangle<T>::readRectangle(T* xl,T* yl,T* xr,T* yr){
        *xl=x1;*yl=y1;*xr=x2;*yr=y2;
    }
    int main()
    {    
        CRectangle<int> r1(0,0,4,4);
        cout<<r1.findArea()<<endl;
        CRectangle<float> r2(1.5,1.5,4.5,4.5);
        cout<<r2.findArea()<<endl;
        CRectangle<double> r3(2.5,2.5,9.88888,9.88888);
        cout<<r3.findArea()<<endl;
        return 0;
     } 
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月22日
  • 已采纳回答 4月22日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数