/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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,但是发现没用····
第十周任务三 圆柱类继承圆类,圆类继承点类
最新推荐文章于 2021-07-19 16:03:53 发布