第13周-任务4-抽象类CSolid及派生类CCube、CBall、CCylinder

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 【题目】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。 【参考解答】 #include "iostream"using namespace std;con

【题目】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。


【参考解答】

#include "iostream"
using namespace std;

const double pai=3.1415926;
// 抽象立体图形基类
class CSolid
{
public:
	virtual double SurfaceArea() const=0;
	virtual double Volume() const=0;
};

// 立方体类
class CCube : public CSolid
{
public:
	CCube(double len=0);
	double SurfaceArea() const;   // 求表面积
	double Volume() const;        // 求体积
private:
	double length;

};

// 立方体类构造函数
CCube::CCube(double len)
{
	length=len;
}

// 求立方体表面积
double CCube::SurfaceArea() const
{
	double c;
	c=6*length*length;
	return c;
}

// 求立方体体积
double CCube::Volume() const
{
	double c;
	c=length*length*length;
	return c;
}

// 球体类
class CBall : public CSolid
{
private:
	double radius;            // 圆周率
public:
	CBall(double r=0);
	double SurfaceArea() const;  // 求表面积
	double Volume() const;       // 求体积;
};

// 球体类构造函数
CBall::CBall(double r)
{
	radius=r;
}

// 求球体表面积
double CBall::SurfaceArea() const
{
	double c;
	c=4*pai*radius*radius;
	return c;
}

// 求球体体积
double CBall::Volume() const
{
	double c;
	c=pai*radius*radius*radius*4/3;
	return c;
}

// 圆柱体类
class CCylinder : public CSolid
{
private:
		double radius; 
	double height;
public:
	CCylinder(double r=0,double high=0);
	double SurfaceArea() const;       // 求表面积
	double Volume() const;            // 求体积
};

// 圆柱体类构造函数
CCylinder::CCylinder(double r,double high) 
{
	radius=r;
	height=high;
}

// 求圆柱体表面积
double CCylinder::SurfaceArea() const
{
	double c;
	c=pai*radius*radius+2*pai*radius*height;
	return c;
}

// 求圆柱体体积
double CCylinder::Volume() const
{
	double c;
	c=pai*radius*radius*height;
	return c;
}

int main( )
{
	CSolid *p;
	double s,v;
	CCube x(30);
	cout<<"立方体边长为30"<<endl;
	p=&x;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面积:"<<s<<endl;
	cout<<"体积:"<<v<<endl;
	cout<<endl;
	CBall y(4.5);
	cout<<"球体半径为4.5"<<endl;
	p=&y;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面积:"<<s<<endl;
	cout<<"体积:"<<v<<endl;
	cout<<endl;
	CCylinder z(10,20);
	cout<<"圆柱体底面半径、高分别为10, 20"<<endl;
	p=&z;
	s=p->SurfaceArea( );
	v=p->Volume( );
	cout<<"表面积:"<<s<<endl;
	cout<<"体积:"<<v<<endl;
	cout<<endl;
	system("pause");
	return 0;
}


相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
SQL 分布式计算 测试技术
扩展Spark Catalyst,打造自定义的Spark SQL引擎
在Spark2.2版本中,引入了新的扩展点,使得用户可以在Spark session中自定义自己的parser,analyzer,optimizer以及physical planning stragegy rule。
4495 0
|
数据采集 数据可视化 数据处理
利用 Jupyter 实现自动化报告生成
【8月更文第29天】自动化报告生成是在数据分析领域非常有用的一项技能。它可以帮助我们节省大量的手动工作时间,并确保每次生成的报告都是一致且准确的。本文将介绍如何使用 Jupyter Notebook 结合 Python 库(如 Pandas 和 Matplotlib)来实现自动化报告生成。
972 0
|
弹性计算 缓存 监控
基于“日志审计应用”的 DNS 日志洞察实践
DNS 解析日志是一种记录 DNS 请求和响应的基础信息,监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。日志审计服务支持采集 DNS 内网解析日志、公网权威解析日志、GTM 日志。理解 DNS 日志的字段含义,洞察 DNS 日志背后所代表的网络信息,既可以帮助发现和诊断 DNS 解析相关的问题,还可以检测和识别潜在的安全威胁。
8718 110
|
JSON SpringCloudAlibaba Cloud Native
SpringCloudAlibaba:4.3云原生网关higress的JWT 认证
SpringCloudAlibaba:4.3云原生网关higress的JWT 认证
360 1
成功解决smtplib.SMTPAuthenticationError: (535, b'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb
成功解决smtplib.SMTPAuthenticationError: (535, b'Error: \xc7\xeb\xca\xb9\xd3\xc3\xca\xda\xc8\xa8\xc2\xeb
|
安全 搜索推荐 数据安全/隐私保护
什么是域服务(NETBASE第十一课)(二)
什么是域服务(NETBASE第十一课)(二)
211 0
|
消息中间件 存储 数据可视化
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(三)
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(三)
1017 0
百度、阿里、腾讯平台架构都熟悉,小米大数据平台架构OLAP架构演进是否了解(三)
|
小程序
微信小程序:swiper轮播图添加外层圆角
微信小程序:swiper轮播图添加外层圆角
1209 0