#include<iostream>
#include<string>
using namespace std;
class Shape
{
public:
Shape(doublex=0,double y=0,double h=0);
voidsetShape(double,double,double);
virtualdouble area()const=0;
protected:
doublex,y,h;
};
Shape::Shape(double a,double b,double c)
{
x=a;y=b;h=c;
}
void Shape::setShape(double a,doubleb,double c)
{
x=a;y=b;h=c;
}
class Circle:public Shape
{
public:
Circle(doublea=0){x=a;};
virtualdouble area()const
{
return3.14159*x*x;
};
};
class Square:public Shape
{
public:
Square(doublea=0){x=a;};
virtualdouble area()const
{
returnx*x;
};
};
class Rectangle:public Shape
{
public:
Rectangle(doublea=0,double b=0){x=a;y=b;};
virtualdouble area()const
{
returnx*y;
};
};
class Trapezoid:public Shape
{
public:
Trapezoid(doublea=0,double b=0,double c=0){x=a;y=b;h=c;};
virtualdouble area()const
{
return(x+y)*h*0.5;
};
};
class Triangle:public Shape
{
public:
Triangle(doublea=0,double b=0){x=a;y=b;};
virtualdouble area()const
{
returnx*y*0.5;
};
};
int main()
{
Circlecircle(2);Square square(3);Rectangle rectangle(2,3);
Trapezoidtrapezoid(2,3,1);Triangle triangle(3,4);
Shape*pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};
intsum=0;
stringch[5]={"circle","square","rectangle","trapezoid","triangle"};
for(inti=0;i<5;i++)
{
sum+=pt[i]->area();
cout<<ch[i]<<"'sarea is "<<pt[i]->area();cout<<endl;
}
cout<<"Theall of areas are "<<sum;
return0;
}