第十四周上机实践项目——acm所有图形面积之和
2014-05-27 13:17
399 查看
/* *程序的版权和版本声明部分: *Copyright(c)2014,烟台大学计算机学院学生 *All rights reserved. *文件名称: acm所有图形面积之和 *作者:刘中林 *完成日期:2014 年 5 月 27 日 *版本号:v1.0 *对任务及求解方法的描述部分: *问题描述:编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。 用虚函数分别计算几种图形面积,并求它们之和。 要求用基类指针数组,使它每一个元素指向一个派生类对象。 *输入描述:题意。 *程序输出: 五个图形面积之和 *问题分析: *算法设计: */ #include <iostream> #include <cmath> #include <iomanip> using namespace std; const float s=3.1415926; class Shape { public: virtual float area() =0; }; class Circle:public Shape { public: Circle(float r):R(r) {} virtual float area() { return (s*R*R); } protected: float R; }; class Square:public Shape { public: Square(float l):length(l) {} virtual float area() { return (length*length); } protected: float length; }; class Rectangle:public Shape { public: Rectangle(float l,float w):length(l),width(w) {} virtual float area() { return (length*width); } protected: float length,width; }; class Trapezoid:public Shape { public: Trapezoid(float sl,float xl,float h):slength(sl),xlength(xl),hight1(h) {} virtual float area() { return ((slength+xlength)*hight1*1/2); } protected: float slength,xlength,hight1; }; class Triangle:public Shape { public: Triangle(float dl,float h):dlength(dl),hight2(h) {} virtual float area() { return (dlength*hight2*1/2); } protected: float dlength,hight2; }; int main() { float r,a,b,w1,w2,w,h; cout<<fixed<<setprecision(2); cin>>r; Circle circle(r); cin>>a; Square square(a); cin>>a>>b; Rectangle rectangle(a,b); cin>>w1>>w2>>h; Trapezoid trapezoid(w1,w1,h); cin>>w>>h; Triangle triangle(w,h); Shape *pt[5]= {&circle,&square,&rectangle,&trapezoid,&triangle}; double areas=0.0; for(int i=0; i<5; i++) areas=areas+pt[i]->area(); cout<<"total of all areas="<<areas<<endl; return 0; }
*样例输出:
*心得体会:纯虚函数:virtual 函数名称 函数名 (参数列表) =0.
相关文章推荐
- 第十四周上机实践项目——数组大折腾
- 第十四周上机实践项目——字符数组排序
- 第七周上机实践项目 用户图形界面
- 第十四周上机实践——项目1-排序函数模板
- 第十四周上机实践—项目1(4)—验证平衡二叉树相关算法
- 第十四周上机实践项目一任务三--定义数组按要求输出
- 第十四周上机实践项目——形状类族的中的纯虚函数
- 第十四周上机实践—项目1(1)—验证折半查找算法
- 第十四周上机实践项目——阿拉伯数字之素数
- 第二周上机实践项目 项目3-小试循环--求1到m间所有奇数的和
- 第十四周上机实践项目——函数处理
- 第十四周上机实践项目——动物这样叫
- 第十四周上机实践项目——字符串统计(1)
- 第十四周上机实践—项目1(2)—验证分块查找算法
- 第十周上机实践项目——1000以内所有偶数的和
- 第十四周上机实践项目--------数组的排序
- 第十四周上机实践项目——体验纯虚函数
- 第十四周上机实践项目——体验虚析构函数
- 第十四周上机实践—项目2—二叉树排序树中查找的路径
- 第十四周上机实践—项目1(3)—验证二叉排序树相关算法