第十周实验报告3

实验目的:

1.先建立一个Point(点)类,包含数据成员x, y(坐标点)

2.以Point为基类,派生出一个Circle(圆)类,增加数据成员(半径);

3.再以Circle类为直接基类,派生出一个Cyinder(圆柱体)类,再增加数据成员h(高),要求编写程序,设计出各类中基本的成员函数(包括构造函数、构析函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运载符“<<”函数等),使之能用于处理以上类对象,最后求出圆柱体的表面积、体积并输出。

实验代码:

#include <iostream>

#include <cmath>

using namespace std;

class Point
{
public:
	Point(double xx, double yy){x = xx, y = yy;}
	void display(){cout << "圆心: " << "(" << x << ", " << y << ")" << endl;}
	~Point(){}
protected:
	double x;
	double y;
};

class Circle:public Point
{
public:
	Circle(double xx, double yy, double r):Point(xx, yy)
	{
		R = r;
	}
	void show()
	{
		display();
		cout << "半径:" << R << endl;
	}
	double back()
	{
		return R;
	}
	~Circle(){}
private:
	double R;
};

class Cylinder:public Circle
{
public:
	Cylinder(double xx, double yy, double r, double h):Circle(xx, yy, r)
	{
		H = h;
	}
	friend ostream & operator << (ostream & output, Cylinder & c)
	{
		output << c.show_all() << endl; 
		output << c.show_area() << endl;
		output<< c.show_vilume() << endl;
		return output;
	}
	double show_all()
	{
		show();
		cout << "高:";
		return H;
	};
	~Cylinder(){}
    double show_area()
	{
		cout << "圆柱体的表面积为: ";
		return 2 * 3.14 * pow(back(), 2) + 2 * 3.14 * back() * H;
	}
	double show_vilume()
	{
		cout << "圆柱体的体积为: ";
		return 3.14 * pow(back(), 2) * H;
	}

private:
	double H;
};

int main()
{
	Cylinder c(0, 0, 1, 1);
	cout << c;
	cout << endl;

	double x, y ,r , h;
	cout << endl;
	while(1)
	{
		cout << "请输入您想录入的圆柱体的基本数据,包括圆心位置, 半径, 高:" << endl;
        cout << "直到录入数据都为0时结束" << endl;
		cin >> x >> y >> r >> h;
	    Cylinder c1(x, y, r, h);
		if(x == 0 || y == 0 || r == 0 || h == 0)
			break;
		else
		{
	        cout << c1;
		    cout << '\n' << endl;
		}
	}
	system("pause");

	return 0;
}

 

实验结果截图:

请输入您想录入的圆柱体的基本数据,包括圆心位置, 半径, 高:
直到录入数据都为0时结束
1 1 1 1
圆心: (1, 1)
半径:1
高:1
圆柱体的表面积为: 12.56
圆柱体的体积为: 3.14


请输入您想录入的圆柱体的基本数据,包括圆心位置, 半径, 高:
直到录入数据都为0时结束
1 2 3 4
圆心: (1, 2)
半径:3
高:4
圆柱体的表面积为: 131.88
圆柱体的体积为: 113.04


请输入您想录入的圆柱体的基本数据,包括圆心位置, 半径, 高:
直到录入数据都为0时结束
0 0 0 0
请按任意键继续. . .



实验心得:

实验考察多重派生类的构造函数,老师其实很慈悲,今周给的实验课本上都有很好的模板,这个实验当然也不例外,课本上也有类似的例题,难点都是一些技术性的问题,看好课本倒是都能很好的解决,所以啦,综上所述,就没什么可以说的,回归课本就好。

其次的就是一些小的知识点了,比如,新数据的录入,用到了一个小的技巧,while(1),还有,“<<”运载符的重载,这些知识,以前的实验中都有涉及,应该可以很好的解决的。

总的来说,大体结构课本上有好的模板,其次,知识比较琐碎,但是分步骤,一点一点实现代码功能的方式还是很有优越性的,用这种方法,逐步实现代码就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值