第十四周上机实践项目——acm所有图形面积之和

来源:互联网 发布:郎咸平 空姐 知乎 编辑:程序博客网 时间:2024/05/18 03:33
/* *程序的版权和版本声明部分: *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.

0 0
原创粉丝点击