您的位置:首页 > 其它

13周任务4

2012-05-15 18:09 351 查看
/* (程序头部注释开始) 
* 程序的版权和版本声明部分 

* Copyright (c) 2012, 烟台大学计算机学院学生  
* All rights reserved. 

* 文件名称:  抽象类 
 

* 作 者:     苗影
* 完成日期:  2012 年 5 月 15日 

* 版 本 号:  x1.0 
* 对任务及求解方法的描述部分 

* 输入描述:  使用抽象类 
 

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

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

* 程序输出: ...... 
 

* 程序头部的注释结束 
*/    

#include<iostream>
using namespace std;
class CSolid
{
public:
virtual double area()const=0;
virtual double volume()const=0;

};
class CCube:public CSolid
{
public:
CCube(double r=0.0);
virtual double area()const;
virtual double volume()const;
protected:
double radius;
};
CCube::CCube(double r)
{
radius=r;
}
double CCube::area() const{return 6*radius*radius;}
double CCube::volume() const{return radius*radius*radius;}

class CBall:public  CSolid
{
public:
CBall(double h=0);
virtual double area()const;
virtual double volume()const;

protected:
double heigh;
};
CBall::CBall(double h):heigh(h){}
double CBall::volume()const
{
return ((3.14159*3*heigh*heigh*heigh)/4);
}
double CBall::area() const{return 4*3.14159*heigh*heigh;}
class CCylinder:public CSolid
{
public:
CCylinder(double d=0,double m=0);
virtual double area()const;
virtual double volume()const;
protected:
double di;
double ma;
};
CCylinder::CCylinder(double d,double m):di(d),ma(m){}
double CCylinder::area()const
{
return (2 * 3.14159 * di * di + 2 * 3.14159 * di* ma);
}
double CCylinder::volume()const
{
return(3.14159 * di * di* ma);
}
int main()
{
CCube ccube(2);
CBall cball(3);
CCylinder ccylinder(4,6);
CSolid*p;
p=&ccube;
cout<<"正方体的表面积是:"<<p->area ()<<"\n"<<"正方体的体积是"<<p->volume ()<<"\n";
p=&cball;
cout<<"球体的表面积是:"<<p->area ()<<"\n"<<"球体的体积是"<<p->volume ()<<"\n";
p=&ccylinder;
cout<<"圆柱体的表面积是:"<<p->area ()<<"\n"<<"圆柱体的体积是"<<p->volume ()<<"\n";
system("pause");
return 0;
}
运行结果:
正方体的表面积是:24
正方体的体积是8
球体的表面积是:113.097
球体的体积是63.6172
圆柱体的表面积是:251.327
圆柱体的体积是301.593
请按任意键继续. . .
感言:很快完成了任务,真好!!要是每次都这样多好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  任务 class c