打卡 打印点、圆、圆柱信息

发布时间 2023-04-26 23:55:21作者: 起名字真难_qmz

定义平面二维点类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:113.04

思路:继承与虚函数的应用

代码实现:

#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;
}