贵州大学oj C++ 第五次 1.抽象的三维立体形状类Shape3D

这篇具有很好参考价值的文章主要介绍了贵州大学oj C++ 第五次 1.抽象的三维立体形状类Shape3D。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录学习日常 代码可能有错 大家多多包涵 有好的建议提出的话 我会开心接纳 初学阶段 

定义一个抽象的三维立体形状类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

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 防御安全第五次作业

    数据认证是指保证数据的真实性、完整性和可信度,以确保数据不被篡改或伪造。其作用包括但不限于: 保护关键数据不被恶意篡改或损坏 提供数据来源的可靠性和安全性,使其更容易被公众所信任 将数字签名应用到数据中,以便证明数据已被验证且未被篡改 常见的实现技

    2024年02月07日
    浏览(24)
  • 【书生·浦语】大模型实战营——第五次课程作业

            除了安装所需依赖之后,重要的是进行模型转化(转换成TurboMind格式),这里需要注意转化命令的具体用法:         运行上述命令后,会在当前目录新建workspace文件夹,里面存放着转化后的权重文件。以开始以为运行命令参数是 l mdelpoy convert  大模型原始路径 

    2024年01月16日
    浏览(32)
  • 计算机网络实验第五次 11月8日

    静态路由的组网与配置 1、创建一个拓扑结构,搭建网络 ,并配置路由器和 PC 的 IP 地址。     (1) 第一台主机 IP 地址为 192.168.0.100   //网络号为 0, 默认网关是路 由器 1 的 IP 地址:192.168.0.1     (2) 第二台主机 IP 地址为 192.168.3.100    //网络号为 3, 默认网关是路 由器 3 的 IP 地

    2024年02月10日
    浏览(39)
  • 计算机体系结构第五次实验——Branch-Target Buffers(BTB)

    本次实验的主要目的是加深对Branch-Target Buffers的理解。掌握使用Branch-Target Buffers减少或增加分支带来的延迟的情况。 在使用forwarding的情况下,对比采用BTB与不采用BTB技术时流水线的变化。重点分析两种情况下每次循环的stall周期数,都是由什么原因造成的?重点分析与分支指

    2024年02月04日
    浏览(32)
  • 第五次作业 运维高级 构建 LVS-DR 集群和配置nginx负载均衡

    1、基于 CentOS 7 构建 LVS-DR 群集。 LVS-DR模式工作原理 首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客户端计算机(不经过direct

    2024年02月14日
    浏览(36)
  • Matlab绘图(第五节-三维曲面)

    具体讲述了三维曲面绘图方法等。 此时所有点坐标可以表示为: x=[2 2 2 2 2 2;3 3 3 3 3 3;4 4 4 4 4 4;5 5 5 5 5 5;6 6 6 6 6 6] y=[3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8;3 4 5 6 7 8] 矩阵x,y就是该平面内的网格坐标矩阵。 (1)利用矩阵运算生成 (2)利用meshgrid函数生成 [X,Y]=meshgrid(x,y); 其中,

    2023年04月14日
    浏览(34)
  • 郑州轻工业大学OJ合集(C语言)

    代码仅供参考,为作者初次学习C语言时所写 以下代码均未添加注释 学习编程语言,最忌眼高手低。 copy后,不要直接粘到编译器里面,要自己手打,你copy的不应该是代码,而是代码思路,copy的思路多了,自己也就会写了,但是copy代码多了,什么也学不会 0.ZZULIOJ:1000: 从今天开

    2024年02月08日
    浏览(35)
  • 湘大 XTU OJ 1256 湘潭大学 题解(非常详细):枚举

    1256 湘潭大学 湘潭大学简称 “XTU” ,作为即将成为湘大的一份子,怎么不能为湘大添砖加瓦了?现在给你一个 字符串 ,请你计算一下,从中选取字符, 最多能组成多少个“XTU”? 第一行是一个整数K,表示样例的个数。 以后每行一个字符串, 字符串只包含英文大写字母,

    2024年02月13日
    浏览(32)
  • 湘潭大学 湘大 XTU OJ 1055 整数分类 题解(非常详细)

    整数分类 Description 按照下面方法对整数x进行分类:如果x是一个个位数,则x属于x类;否则将x的各位上的数码累加,得到一个新的x,依次迭代,可以得到x的所属类。比如说24,2+4=6,则24的类别数是6;39,3+9=12,1+2=3,则39的类别数是3。 输入        每行输入一个非负整数

    2024年02月12日
    浏览(29)
  • 湘潭大学 湘大 XTU OJ 1271 Color 题解(非常详细)

    链接 1271 题面 Alice在玩一个游戏,她在一个m×n的格子里,随机涂黑k个格子。然后她每次可以把一行或者一列的格子染成红色,但是这一行中不能有黑色的格子。 请问她最多能把多少个格子涂成红色? 第一行是一个整数T(T≤100),表示样例的个数。 每个样例的第一行是m(1≤

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包