【C++】练习题 用继承表示点-圆-圆柱的关系

C++练习题

用继承表示点-圆-圆柱的关系

思路:分析点,圆,圆柱所具有的属性,并且确定基类和派生类,确定好派生类在基类上所增加的属性和方法

一下是代码

//继承表示点->圆柱->圆柱的关系
#include<iostream>
using namespace std;
constexpr auto PI = 3.14;
class Dot  //点具有坐标属性
{
public:
	Dot():d_x(0),d_y(0) {}
	Dot(double x, double y):d_x(x), d_y(y) {}
	void SetX();
	void SetY();
	double GetX();
	double GetY();
private:
	int d_x;
	int d_y;
};
void Dot::SetX() {
	double x;
	cout << "请输入上底面圆心的X坐标:" << endl;
	cin >> x;
	d_x = x; }
void Dot::SetY() { 
	double y;
	cout << "请输入上底面圆心的Y坐标:" << endl;
	cin >> y;
	d_y = y; }
double Dot::GetX() { return d_x; }
double Dot::GetY() { return d_y; }
class Circle :public Dot  //圆有圆心和半径、周长、面积
{
public:
	Circle():c_r(1),c_c(6.28),c_s(3.14){}
	//Circle(double x, double y, double r) :Dot(x, y) { c_r = r; }
	void SetR();
	double GetR();
	double GetArea();
	double GetC();
private:
	double c_r;
	double c_c;
	double c_s;
};
void Circle::SetR() { 
	double r;
	cout << "请输入上底面圆的半径:" << endl;
	cin >> r;
	c_r = r; }
double Circle::GetR() { return c_r; }
double Circle::GetArea() { return c_s = PI * c_r * c_r; }
double Circle::GetC() { return c_c = 2 * PI * c_r; }
class Cylinder :public Circle  //圆柱有上底面、高、表面积、体积
{
public:
	Cylinder():c_h(1),c_s(12.56),c_v(3.14){}
	//Zhu(double x, double y, double r, double h) :Circle(x, y, r) { z_h = h; }
	void SetH();
	double GetH();
	double GetS(Cylinder);
	double GetV(Cylinder);
private:
	double c_h;
	double c_v;
	double c_s;
};
void Cylinder::SetH() {
	double h;
	cout << "请输入圆柱的高:" << endl;
	cin >> h;
	c_h = h; }
double Cylinder::GetH() { return c_h; }
double Cylinder::GetS(Cylinder z)
{
	z.c_s = 2 * z.GetArea()+ z.GetC() * c_h;
	return z.c_s;
}
double Cylinder::GetV(Cylinder z)
{
	z.c_v = z.GetArea()* c_h;
	return z.c_v;
}
int main()
{
	Cylinder z;
	z.SetX();
	z.SetY();
	z.SetR();
	z.SetH();
	cout << "圆柱的上底面圆心:("<<z.GetX()<<','<<z.GetY()<<')'<<endl;
	cout << "圆柱的上底面半径:"<<z.GetR()<<endl;	
	cout << "圆柱的高:"<<z.GetH()<<endl;
	cout << "圆柱的上底面周长:"<<z.GetC()<<endl;	
	cout << "圆柱的上底面积:"<<z.GetArea()<<endl;
	cout << "圆柱的表面积:" << z.GetS(z) << endl;
	cout << "圆柱的体积:" << z.GetV(z) << endl;
	return 0;
}

采用了多继承关系
圆继承于点,圆柱继承于圆

大一小白,坚持练习,代码还很笨重,希望各路大神多多指点

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值