zoukankan      html  css  js  c++  java
  • C++习题 虚函数-计算图形面积

    C++习题 虚函数-计算图形面积

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 122  Solved: 86
    [Submit][Status][Web Board]

    Description

    编写一个程序,定义抽象基类Shape,由它派生出5个派生类: Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。
    用虚函数分别计算几种图形面积,并求它们之和。
    要求用基类指针数组,使它每一个元素指向一个派生类对象。 

    Input

    圆的半径
    正方形的边长
    矩形的边长
    梯形的上底和下底,高
    三角形的底与高

    Output

    所有图形面积之和(结果保留两位小数)

    Sample Input

    12.63.54.5 8.42.0 4.5 3.24.5 8.4

    Sample Output

    total of all areas=574.11
    #include <iostream>
    #include<iomanip>
    using namespace std;
    class Shape
    {
      public:
          virtual float area()=0;
          private:
    
    };
    class Circle:public Shape
    {
    public:
        Circle(float s)
        {r=s;
        }
    float area(){return (3.1415926*r*r);}
        private:
            float r;
    
    };
    
    class Square:public Shape
    {
    public:
        Square (float s)
        {
         a=s;
        }
        float area() { return (a*a); }
    private:
        float a;
    };
    class Rectangle :public Shape
    {
    public:
        Rectangle (float s,float d)
        {
         a=s;
         b=d;
        }
     float area() { return (a*b);}
    private:
        float a,b;
    };
    class Trapezoid:public Shape
    {
    public:
        Trapezoid (float s,float d,float ss)
        {
         w1=s;
         w2=d;
         h=ss;
        }
        float area() { return ((w1+w2)*h/2); }
    private:
        float w1,w2,h;
    };
    class Triangle:public Shape
    {
    public:
        Triangle (float s,float d)
        {
         w=s;
         h=d;
        }
        float area() { return (w*h/2); }
    private:
        float w,h;
    };
    
    
    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;
    
    }
    


  • 相关阅读:
    远程培训数据库迁移
    RMAN系列catalog数据库
    RMAN系列表空间恢复
    典型的一周备份脚本
    [转载]对 Oracle 备份与恢复 的补充说明转自tianlesoft的文章
    RMAN系列基于scn恢复
    使用Profile对用户Session会话进行资源限制
    RMAN系列控制文件、数据文件、redolog全部丢失
    全自动 TSPITR基于RMANLOGSEQ
    Oracle 10g EXPDP和IMPDP使用说明
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3766919.html
Copyright © 2011-2022 走看看