PTA 用虚函数分别计算各种图形的面积
PTA 用虚函数分别计算各种图形的面积
定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,并求出它们的和。要求用基类指针数组。使它的每一个元素指向一个派生类的对象。PI=3.1415926
输入格式:
请在这里写输入格式。例如:输入在一行中给出9个大于0的数,用空格分隔,分别代表圆的半径,正方形的边长,矩形的宽和高,梯形的上底、下底和高,三角形的底和高。
输出格式:
请在这里描述输出格式。例如:输出所有图形的面积和,小数点后保留3位有效数字。
输入样例:
在这里给出一组输入。例如:
12.6 3.5 4.5 8.4 2.0 4.5 3.2 4.5 8.4
输出样例:
在这里给出相应的输出。例如:
total of all areas = 574.109
#include
#include
using namespace std;
class Shape{public:const double PI;Shape():PI(3.1415926){}virtual double Area()=0;
};
class Circle:public Shape{private:double rad;public:double Area(){setRad();return PI * rad * rad;}void setRad(){cin>>rad;}
};
class Square:public Shape{private:double side;public:void setSide(){cin>>side;}double Area(){setSide();return side * side;}
};
class Rectangle:public Shape{private:double len,w;public:void setRec(){cin>>len>>w;}double Area(){setRec();return len * w;}
};
class Trapezoid:public Shape{private:double s,x,high;public:void setTra(){cin>>s>>x>>high;x = s;}double Area(){setTra();return (s + x) * high / 2;}
};
class Triangle:public Shape{private:double d,h;public:void setTri(){cin>>d>>h;}double Area(){setTri();return d * h / 2;}
};
int main()
{Shape *p[5];double total = 0;p[0] = new Circle;p[1] = new Square;p[2] = new Rectangle;p[3] = new Trapezoid;p[4] = new Triangle;cout<<fixed<<setprecision(3);for(int i = 0; i < 5; i++){total += p[i]->Area();delete p[i];}cout<<"total of all areas = "<<total<<endl;return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
