实现一个三角形类。
声明一个包含5个三角形的数组,并初始化它。
分别按面积和周长对三角形数组进行排序。
实现一个三角形类。 声明一个包含5个三角形的数组,并初始化它。 分别按面积和周长对三角形数组进行排序。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
6条回答 默认 最新
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
问题分析: 这道问题要求我们实现一个三角形类,并对包含5个三角形的数组进行排序。其中排序的依据可以是面积或周长。因此,我们需要确定三角形类的成员变量和成员函数,并实现排序算法。 解决办法:- 设计三角形类 三角形类应该具有以下成员变量和成员函数:
class Triangle { private: double a, b, c; // 三角形三边长度 public: Triangle(double side1, double side2, double side3); // 构造函数,初始化三角形三边长度 double getArea(); // 计算三角形面积 double getPerimeter(); // 计算三角形周长 };对于成员函数 getArea 和 getPerimeter,可以用海伦公式和简单的求和运算计算。
double Triangle::getArea() { double p = (a + b + c) / 2; return sqrt(p * (p - a) * (p - b) * (p - c)); } double Triangle::getPerimeter() { return a + b + c; }- 对数组进行排序 下面是按面积排序的代码,先用一个数组存储每个三角形的面积和索引,然后根据面积排序,最后按顺序输出三角形的边长和面积。
int main() { Triangle triArray[5] = { Triangle(3, 4, 5), Triangle(4, 5, 6), Triangle(5, 12, 13), Triangle(7, 8, 10), Triangle(9, 10, 17) }; double areaArray[5]; for (int i = 0; i < 5; i++) { areaArray[i] = triArray[i].getArea(); } for (int i = 0; i < 4; i++) { for (int j = i + 1; j < 5; j++) { if (areaArray[i] > areaArray[j]) { double temp = areaArray[i]; areaArray[i] = areaArray[j]; areaArray[j] = temp; Triangle temp1 = triArray[i]; triArray[i] = triArray[j]; triArray[j] = temp1; } } } for (int i = 0; i < 5; i++) { cout << "Triangle " << i + 1 << ": sides(" << triArray[i].a << ", " << triArray[i].b << ", " << triArray[i].c << "), area=" << areaArray[i] << endl; } return 0; }按周长排序的代码类似,只需要把 getArea 改为 getPerimeter 即可。 参考资料: 1. 海伦公式 2. 排序算法
解决 无用评论 打赏 举报