01./*
02.* 程序的版权和版本声明部分:
03.* Copyright (c) 2011, 烟台大学计算机学院
04.* All rights reserved.
05.* 文件名称:test.cpp
06.* 作 者:刘芳
07.* 完成日期:2014 年5 月29 日
08.* 版 本 号:v1.0
09.* 对任务及求解方法的描述部分:
10.* 输入描述:无
11.* 问题描述: 设计抽象类CSolid,含有用于求表面积及体积的纯虚函数,在设计派生类正方体,球体,圆柱体,求面积,体积
12.* 程序输出:
13.* 问题分析:略
14.* 算法设计:略
15.*/
#include <iostream>
using namespace std;
class CSolid
{
public:
virtual float area()const=0;
virtual float volume()const=0;
};
class CCube:public CSolid//正方体
{
public:
virtual float area()const;
virtual float volume()const;
CCube(float);
private:
float a;
};
CCube::CCube(float m)
{
a=m;
}
float CCube::area()const
{
float s;
s=6*a*a;
return s;
}
float CCube::volume()const
{
return a*a*a;
}
class CBall:public CSolid//球体
{
public:
virtual float area()const;
virtual float volume()const;
CBall(float);
private:
float r;
};
CBall::CBall(float R)
{
r=R;
}
float CBall::area()const
{
return 4*3.1415*r*r;
}
float CBall::volume()const
{
return 3.0/4*3.1415*r*r*r;
}
class CCylinder:public CSolid
{
public:
virtual float area()const;
virtual float volume()const;
CCylinder(float,float);
private:
float r;
float h;
};
CCylinder::CCylinder(float m,float n)
{
r=m;
h=n;
}
float CCylinder::area()const
{
return 2*3.1415*r*r+2*3.1415*r*h;
}
float CCylinder::volume()const
{
return 3.1415*r*r*h;
}
int main()
{
CSolid *p;
float v,R,H;
cout<<"请输入正方体的边长:"<<endl;
cin>>v;
CCube C(v);
p=&C;
cout<<"正方体的面积:"<<p->area()<<endl;
cout<<"正方体的体积:"<<p->volume()<<endl;
cout<<"请输入球体的半径:"<<endl;
cin>>R;
CBall cball(R);
p=&cball;
cout<<"球体的面积:"<<p->area()<<endl;
cout<<"球体的体积:"<<p->volume()<<endl;
cout<<"请输入圆柱体的半径,高:"<<endl;
cin>>R>>H;
CCylinder ccylinder(R,H);
p=&ccylinder;
cout<<"圆柱体的面积:"<<p->area()<<endl;
cout<<"圆柱体的体积:"<<p->volume()<<endl;
return 0;
}