Description |
定义抽象类型Shape,由他派生三个类:Circle(圆形),Rectangle(矩形),Trapezoid(梯形),用一个函数printArea分别输出三者的面积。主函数已经给出,3个图形的数据在定义对象时给定,根据提示完成程序并提交。
注意:抽象类的定义及使用 主函数如下: int main() |
Input |
无 |
Output |
输出圆的面积 输出矩形面积 输出梯形面积 |
Sample Input |
无 |
Sample Output |
area of circle=498.759
area of rectangle=37.8 area of trapezoid=52.5 |
#include<iostream>
using namespace std;
const double PI=3.14159;
class Shape //抽象类
{
protected:
double x, y, z;
public:
Shape(double d, double w=0,double z=0){x=d;y=w;this->z=z;}
double getx() {return x;}
double gety() {return y;}
double getz() {return z;}
};
class Rectangle:public Shape
{
public:
Rectangle(double d, double w=0,double z=0):Shape(d,w,z){}
};
class Circle:public Shape{
public:
Circle(double d, double w=0,double z=0):Shape(d,w,z){}
};
class Trapezoid:public Shape{
public:
Trapezoid(double d, double w=0,double z=0):Shape(d,w,z){}
};
void printArea(Circle c)
{
cout<<PI*c.getx()*c.getx()<<endl;
}
void printArea(Rectangle r)
{
cout<<r.getx()*r.gety()<<endl;
}
void printArea(Trapezoid t)
{
cout<<(t.getx()+t.getz())*t.gety()/2.0<<endl;
}
int main()
{
Circle circle(12.6);
cout<<"area of circle=";
printArea(circle);
Rectangle rectangle(4.5,8.4);
cout<<"area of rectangle=";
printArea(rectangle);
Trapezoid trapezoid(4.5,8.4,8.0);
cout<<"area of trapezoid=";
printArea(trapezoid);
return 0;
}