1.每日打卡-12.每日打卡-2.13.每日打卡-2.24.每日打卡-35.每日打卡-5.26.每日打卡-5.17.每日打卡-4.28.每日打卡-4.19.每日打卡-11.210.每日打卡-11.111.每日打卡-1012.每日打卡-913.每日打卡-8.214.每日打卡-8.115.每日打卡-716.每日打卡-617.每日打卡-22.118.每日打卡-22.219.每日打卡-21.420.每日打卡-21.221.每日打卡-21.322.每日打卡-21.123.每日打卡-20.224.每日打卡-20.125.每日打卡-1926.每日打卡-1827.每日打卡-1728.每日打卡-1629.每日打卡-1530.每日打卡-1431.每日打卡-1332.每日打卡-1233.每日打卡-3334.每日打卡-3235.每日打卡-3136.每日打卡-30
37.每日打卡-29
38.每日打卡-2839.每日打卡-2740.每日打卡-2641.每日打卡-2542.每日打卡-24.243.每日打卡-24.144.每日打卡-23一.问题描述
定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle( 长方形)、Trapezoid (梯形)和Triangle (三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。
二.设计思路
三.流程图
四.伪代码
1
五.代码实现
#include<iostream>
#include<iomanip>
using namespace std;
class Shape
{
public:
virtual double area() const = 0;
};
class Circle :public Shape
{
public:
Circle(double r) :radius(r) { }
virtual double area() const
{
return 3.14159 * radius * radius;
}
protected:
double radius;
};
class Square :public Shape
{
public:
Square(double s) :side(s)
{
}
virtual double area() const
{
return side * side;
}
protected:
double side;
};
class Rectangle :public Shape
{
public:
Rectangle(double w, double h) :width(w), height(h)
{
}
virtual double area() const
{
return width * height;
}
protected:
double width, height;
};
class Trapezoid :public Shape
{
public:
Trapezoid(double t, double b, double h) :top(t), bottom(b), height(h)
{
}
virtual double area() const
{
return 0.5 * (top + bottom) * height;
}
protected:
double top, bottom, height;
};
class Triangle :public Shape
{
public:
Triangle(double w, double h) :width(w), height(h)
{
}
virtual double area() const
{
return 0.5 * width * height;
}
protected:
double width, height;
};
int main()
{
double a, b, c;
cin >> a;
Circle a1(a);
cin >> a;
Square a2(a);
cin >> a >> b;
Rectangle a3(a, b);
cin >> a >> b >> c;
Trapezoid a4(a, b, c);
cin >> a >> b;
Triangle a5(a, b);
Shape* pt[5] =
{
&a1,&a2,&a3,&a4,&a5
};
double areas = 0.0;
for (int i = 0; i < 5; i++)
{
areas = areas + pt[i]->area();
}
cout << fixed << setprecision(3) << areas << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~