程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++習題 虛函數-計算圖形面積

C++習題 虛函數-計算圖形面積

編輯: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 
#include
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<>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="<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved