记录学习日常 代码可能有错 大家多多包涵 有好的建议提出的话 我会开心接纳 初学阶段
定义一个抽象的三维立体形状类Shape3D,该类有一个数据成员shapeName(形状名称),一个纯虚函数calVolume(计算体积),用于计算三维立体形状的体积。
(1)请完成Shape3D类的定义,定义你认为必要的任何成员;
(2)请为Shape3D类定义公有派生类Cube(正方体类)、Cuboid(长方体类),Sphere(球体类)和Cone(圆锥体类)。Cube类有side(边长)数据成员;Cuboid类有length、width和height数据成员(分别代表长、宽、高);Sphere类有radius(半径)数据成员;Cone类有radius和height数据成员(分别代表底面半径和高)。在这些派生类中分别实现纯虚函数calVolume。
(3)在主函数中定义Shape3D的指针并分别指向不同的派生类对象,调用calVolume计算不同三维立体形状的体积。
main函数已经完成,请根据main函数的内容完成以上所有类的定义。在程序中,请使用下面的圆周率定义并使用该圆周率进行计算:
const double PI=3.14159265;
int main(){
double length,width,height,radius;
Shape3D *sp;
cin>>length;
Cube cube("Cube",length);
cin>>length>>width>>height;
Cuboid cuboid("Cuboid",length,width,height);
cin>>radius;
Sphere sphere("Sphere",radius);
cin>>radius>>height;
Cone cone("Cone",radius,height);
sp=&cube;
cout<<sp->getName()<<":"<<sp->calVolume()<<endl;
sp=&cuboid;
cout<<sp->getName()<<":"<<sp->calVolume()<<endl;
sp=&sphere;
cout<<sp->getName()<<":"<<sp->calVolume()<<endl;
sp=&cone;
cout<<sp->getName()<<":"<<sp->calVolume()<<endl;
return 0;
}
输入描述
第一行输入正方体边长
第二行输入长方体的长、宽和高
第三行输入球体的半径
第四行输入圆锥体的底面半径和高
输出描述
第一行输出正方体体积
第二行输出长方体体积
第三行输出球体体积
第四行输出圆锥体体积
提示
你需要提交除了main函数之外的其他代码
样例输入输出
2
1 2 3
2
2 3文章来源:https://www.toymoban.com/news/detail-598933.html
Cube:8
Cuboid:6
Sphere:33.5103
Cone:12.5664
代码:文章来源地址https://www.toymoban.com/news/detail-598933.html
#include<iostream>
#define PI 3.14159265
using namespace std;
// 基类
class Shape3D{
public:
// 定义两个虚函数 一个用于计算面积 一个用于打印名称
virtual double calVolume()=0;
virtual string getName()=0;
};
// Cube继承了Shape3D
class Cube:public Shape3D{
// 正方体的边长 名称
double side;
string name;
public:
Cube()=default;
// 构造方法 传入名称和边长 初始化列表赋值
Cube(string n,double s):name(n),side(s){}
double calVolume(){return side*side*side;}
//获得图形的名称
string getName(){return name;}
};
class Cuboid:public Shape3D{
// 长方体的长宽高 名称
double length;
double width;
double height;
string name;
public:
Cuboid()=default;
// 构造方法 传入长宽高 名称 初始化列表赋值
Cuboid(string n,double l,double w,double h):name(n),length(l),width(w),height(h){}
double calVolume(){return length*width*height;}
// 获得图形的名称
string getName(){return name;}
};
class Sphere:public Shape3D{
// 球体的半径 名称
double radius;
string name;
public:
Sphere()=default;
// 构造方法 传入名称和半径 初始化列表赋值
Sphere(string n,double r):name(n),radius(r){}
double calVolume(){return (4*PI*radius*radius*radius)/3;}
//获得图形的名称
string getName(){return name;}
};
class Cone:public Shape3D{
// 圆锥体的半径 高 名称
double radius;
double height;
string name;
public:
Cone()=default;
// 构造方法 传入半径 高 名称 初始化列表赋值
Cone(string n,double r,double h):name(n),radius(r),height(h){}
double calVolume(){return (PI*radius*radius*height)/3;}
// 获得图形的名称
string getName(){return name;}
};
到了这里,关于贵州大学oj C++ 第五次 1.抽象的三维立体形状类Shape3D的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!