2401_84201324 2024-04-09 19:31 采纳率: 57.1%
浏览 5

实现一个三角形类。 声明一个包含5个三角形的数组,并初始化它。 分别按面积和周长对三角形数组进行排序。

实现一个三角形类。
声明一个包含5个三角形的数组,并初始化它。
分别按面积和周长对三角形数组进行排序。

  • 写回答

6条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-04-09 19:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 这道问题要求我们实现一个三角形类,并对包含5个三角形的数组进行排序。其中排序的依据可以是面积或周长。因此,我们需要确定三角形类的成员变量和成员函数,并实现排序算法。 解决办法:
    1. 设计三角形类 三角形类应该具有以下成员变量和成员函数:
    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;
    }
    
    1. 对数组进行排序 下面是按面积排序的代码,先用一个数组存储每个三角形的面积和索引,然后根据面积排序,最后按顺序输出三角形的边长和面积。
    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. 排序算法

    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日