您的位置:首页 > 其它

第13周任务4(设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体)

2012-05-15 22:54 441 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作    者:   臧鹏
* 完成日期:   2012   年  5 月  15   日
* 版 本 号:

* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。在

main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。

* 程序输出:
* 程序头部的注释结束
*/

#include <iostream>
using namespace std;
class CSolid
{
public:
virtual double area()=0;
virtual double volume()=0;
};
class CCube:public CSolid
{
public:
CCube(double l=0){length=l;}
double area(){return length*length*6;}
double volume(){return length*length*length;}
private:
double length;
};

class CBall:public CSolid
{
public:
CBall(double r=0){radius=r;}
double area() {return 4*3.1415*radius*radius;}
double volume(){return (4*3.1415*radius*radius*radius)/3;}
private:
double radius;
};

class CCylinder:public CSolid
{
public:
CCylinder(double r=0,double h=0):radius(r),height(h){}
double area(){return (2*radius*radius+2*3.1415*radius*height);}
double volume() {return 3.1415*radius*radius*height;}
private:
double radius,height;
};

int main()
{
CSolid *p;
CCube r1(3);
CBall t1(5);
CCylinder q1(2,6);
p=&r1;
cout<<"正方体的边长为3"<<endl;
cout<<"正方体的表面积为:"<<p->area()<<endl;
cout<<"正方体的体积为:"<<p->volume()<<endl;
p=&t1;
cout<<"球的半径为5"<<endl;
cout<<"球体的表面积为:"<<p->area()<<endl;
cout<<"球体的体积为:"<<p->volume()<<endl;
p=&q1;
cout<<"圆柱体的半径为2,高为6"<<endl;
cout<<"圆柱体的表面积为:"<<p->area()<<endl;
cout<<"球体的体积为:"<<p->volume()<<endl;
system("pause");
return 0;
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐