#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area() const=0;
};
class Circle:public Shape //圆形
{
public:
Circle(double r):radius(r){}
double area() const
{
return 3.1415926*radius*radius;
}
private:
double radius;
};
class Square:public Shape //正方形
{
public:
Square(double s):side(s){}
double area() const
{
return side*side;
}
private:
double side;
};
class Rectangle:public Shape //矩形
{
public:
Rectangle(double len,double w):length(len),width(w){}
double area() const
{
return length*width;
}
private:
double length;
double width;
};
class Trapezoid:public Shape //梯形
{
public:
Trapezoid(double t,double b,double h):top(t),bottom(b),height(h){}
double area() const
{
return (top+bottom)*height*0.5;
}
private:
double top;
double bottom;
double height;
};
class Triangle:public Shape //三角形
{
public:
Triangle(double b,double h):bottom(b),height(h){}
double area() const
{
return bottom*height*0.5;
}
private:
double bottom;
double height;
};
int main()
{
Circle circle(3.5);
Square square(5.5);
Rectangle rectangle(3,5);
Trapezoid trapezoid(1,2,3);
Triangle triangle(1,2);
Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};
cout<<"Circle area="<<pt[0]->area()<<endl;
cout<<"Square area="<<pt[1]->area()<<endl;
cout<<"Rectangle area="<<pt[2]->area()<<endl;
cout<<"Trapezoid area="<<pt[3]->area()<<endl;
cout<<"Triangle area="<<pt[4]->area()<<endl;
double sum=0;
for(int i=0;i<5;i++)
{
sum+=pt[i]->area();
}
cout<<"SumArea="<<sum<<endl;
return 0;
}
using namespace std;
class Shape
{
public:
virtual double area() const=0;
};
class Circle:public Shape //圆形
{
public:
Circle(double r):radius(r){}
double area() const
{
return 3.1415926*radius*radius;
}
private:
double radius;
};
class Square:public Shape //正方形
{
public:
Square(double s):side(s){}
double area() const
{
return side*side;
}
private:
double side;
};
class Rectangle:public Shape //矩形
{
public:
Rectangle(double len,double w):length(len),width(w){}
double area() const
{
return length*width;
}
private:
double length;
double width;
};
class Trapezoid:public Shape //梯形
{
public:
Trapezoid(double t,double b,double h):top(t),bottom(b),height(h){}
double area() const
{
return (top+bottom)*height*0.5;
}
private:
double top;
double bottom;
double height;
};
class Triangle:public Shape //三角形
{
public:
Triangle(double b,double h):bottom(b),height(h){}
double area() const
{
return bottom*height*0.5;
}
private:
double bottom;
double height;
};
int main()
{
Circle circle(3.5);
Square square(5.5);
Rectangle rectangle(3,5);
Trapezoid trapezoid(1,2,3);
Triangle triangle(1,2);
Shape *pt[5]={&circle,&square,&rectangle,&trapezoid,&triangle};
cout<<"Circle area="<<pt[0]->area()<<endl;
cout<<"Square area="<<pt[1]->area()<<endl;
cout<<"Rectangle area="<<pt[2]->area()<<endl;
cout<<"Trapezoid area="<<pt[3]->area()<<endl;
cout<<"Triangle area="<<pt[4]->area()<<endl;
double sum=0;
for(int i=0;i<5;i++)
{
sum+=pt[i]->area();
}
cout<<"SumArea="<<sum<<endl;
return 0;
}