pta 1.3-6 打印点、圆、圆柱信息 (10 分)

定义平面二维点类CPoint,有数据成员x坐标,y坐标,函数成员(构造函数、虚函数求面积GetArea, 虚函数求体积函数GetVolume、输出点信息函数print。 由CPoint类派生出圆类Cirle类(新增数据成员半径radius),函数成员(构造函数、求面积GetArea,虚函数求体积函数GetVolume、输出圆面积信息函数print。 再由Ccirle类派生出圆柱体Ccylinder类(新增数据成员高度height),函数成员(构造函数、求表面积GetArea ,求体积函数GetVolume、输出圆柱体体积信息函数print。在主函数测试这个这三个类。 打印数据保留小数点后2位

输入格式:

点的:x坐标 点的:y坐标 圆半径 圆柱高

输出格式:

点信息 圆面积 圆柱体积

样例">样例">样例">样例">样例">样例">输入样例:

在这里给出一组输入。例如:

1
2
3
4

输出样例:

在这里给出相应的输出。例如:

CPoint:1,2
CirleArea:28.26
CcylinderVolume

这里直接给出答案!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

本人大一新生初学者后续将陆续推出各种学习笔记以及优质题目的分享

//代码可以通过提交,可以供直接用,不过此题意图还是想加深对继承,组合,虚函数的理解
//代码不多也易理解
#include<iostream>
using namespace std;
/****************************************************************************/
class point{
    private:
    double x,y;
    public:
    void print();
    point(double x1,double y1);
};
point::point(double x1,double y1){x=x1;y=y1;}
void point::print(){
    cout<<"CPoint:"<<x<<","<<y<<endl;
}

/*****************************************************************************/
class circle:public point{
    private:
        double r;
    public:
    circle(int x,int y,double r1);
    virtual double getarea();
    virtual double get_r();
    virtual void print();
};
    circle::circle(int x,int y,double r1):point(x,y){r=r1;}
    double circle::getarea(){
    return 3.14*r*r;
}
    double circle::get_r(){return r;}
    void circle::print(){
    cout<<"CirleArea:"<<getarea()<<endl;
}
/****************************************************************************/
class ccylinde:public circle{
    private:
    int height;
    public: 
    ccylinde(double,double,double,double);
    virtual double getarea();
    double get_v();
    virtual void print();
};
ccylinde::ccylinde(double x,double y,double r,double h):circle(x,y,r){
    height=h;
}
double ccylinde::getarea(){
    return 3.14*get_r()*get_r();
}
double ccylinde::get_v(){
    return getarea()*height;
}
void ccylinde::print(){
    cout<<"CcylinderVolume:"<<get_v()<<endl;
}
/****************************************************************************/
int main(){
    double x,y,r,h;
    cin>>x>>y>>r>>h;
    point p(x,y);
    p.print();
    circle c(x,y,r);
    c.print();
    ccylinde cc(x,y,r,h);
    cc.print();
    return 0;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴趣使然的蓝精灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值