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指针,输出正方体、球体及圆柱体对象的表面积及体积。
* 程序输出: ......
* 程序头部的注释结束
*/
* 程序的版权和版本声明部分
* 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 请按任意键继续. . .
感言:很快完成了任务,真好!!要是每次都这样多好