第十周任务三 圆柱类继承圆类,圆类继承点类

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:   Point to Circle to Cylinder                          
* 作    者:   姜雅明                              
* 完成日期:    2012     年   04    月    25    日
* 版 本 号:   1.0       

* 对任务及求解方法的描述部分
* 输入描述: 点,半径,高
* 问题描述: 计算圆的面积,圆柱的体积和表面积
* 程序输出: 圆的面积,圆柱的体积和表面积
* 程序头部的注释结束
*/

#include<iostream>
#include<Cmath>

using namespace std;

class Point //定义坐标点类
{
protected:
	double x, y; //点的横坐标和纵坐标
public:  
	Point(){x = 0;y = 0;}
	Point(double x0,double y0) {x = x0; y = y0;} 
	double get_x(){return x;}
	double get_y(){return y;}
	friend ostream & operator << (ostream &out,Point &d);
};  

ostream & operator<<(ostream &out,Point &d)
{
	return out << "Point:(" << d.x << "," << d.y << ")" << endl;
}

class Circle : public Point
{
protected:
	double r;
public:
	Circle(){r = 0;}
	Circle (double r0):r(r0){}
	void set_r(double r1){r = r1;}
	double get_r(){return r;}
	double area(){return 3.14159 * r * r;}
	friend ostream & operator << (ostream &out, Circle &r);
};

ostream & operator<<(ostream &out,Circle &r)
{
	return out << "r:" << r.get_r() << endl << "area:" << r.area() << endl;
}

class Cylinder : public Circle
{
private:
	double h;
public:
	Cylinder (){h = 0;}
	Cylinder (double r0, double h0):Circle(r0), h(h0){}
	void set_h(double h1){h = h1;}
	double get_h(){return h;}
	double area(){return 2 * 3.14159 * r * h + 2 * 3.14159 * r * r;}
	double volume(){return Circle::area() * h;}
	friend ostream & operator << (ostream &out, Cylinder &h);
};

ostream & operator<<(ostream &out,Cylinder &h)
{
	return out << "h:" << h.get_h() << endl << "area:" << h.area() << endl << "volume:" << h.volume() << endl;
}

int main()
{
	Point ps(-2,5);

	cout << ps;//输出直线l中点的信息

	Circle o(2);

	cout << o;

	Cylinder h(2,4);

	cout << h;

	system("pause");
	return 0;
}



/*Point:(-2,5)
 *r:2
 *area:12.5664
 *h:4
 *area:75.3982
 *volume:50.2654
 *请按任意键继续. . .
 */


开始一圆柱的面积和体积一直是0···以为是半径传不过来,所以用了Circle::area,但是发现没用····
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值