题目描述
运用多态编写程序,声明抽象基类Shape,由它派生出3个派生类: Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea()分别输出以上三者的面积(结果保留两位小数),3个图形的数据在定义对象时给定。
输入
圆的半径 矩形的边长 三角形的底与高
输出
圆的面积
矩形的面积
三角形的面积
注意:每一行后有回车符
样例输入
12.6 4.5 8.4 4.5 8.4
样例输出
area of circle=498.76
area of rectangle=37.80
area of triangle=18.90
代码实现
#include<iostream>
#include<iomanip>
#define PI 3.1415926
using namespace std;
class Shape {
public:
virtual double printArea()=0;
};
class Circle:public Shape {
private:
double r;
public:
Circle(double x) {
r=x;
}
virtual double printArea() {
return PI*r*r;
}
};
class Rectangle:public Shape {
private:
double w,h;
public:
Rectangle(double x,double y) {
w=x,h=y;
}
virtual double printArea() {
return w*h;
}
};
class Triangle:public Shape {
private:
double w,h;
public:
Triangle(double x,double y) {
w=x,h=y;
}
virtual double printArea() {
return w*h/2;
}
};
double printArea(Shape &x) {
return x.printArea();
}
int main() {
double a,b,c,d,e;
cin>>a>>b>>c>>d>>e;
Circle cir(a);
Rectangle rec(b,c);
Triangle tri(d,e);
cout<<fixed<<setprecision(2)<<"area of circle="<<printArea(cir)<<'\n';
cout<<fixed<<setprecision(2)<<"area of rectangle="<<printArea(rec)<<'\n';
cout<<fixed<<setprecision(2)<<"area of triangle="<<printArea(tri)<<'\n';
return 0;
}
以上所述是小编给大家介绍的C++计算圆形、矩形和三角形的面积,希望对大家有所帮助。在此也非常感谢大家对编程网网站的支持!