基于面积对三角形进行排序的C程序

假设我们有一个由不同三角形组成的数组,其中三角形 [i] = [ai, bi, ci] 这些是第 i 个三角形的边。我们必须根据它们的面积对三角形进行排序。使用边的三角形面积为: p*(pa)*(pb)*(pc) 的平方根,其中 p = (a+b+c)/2。

所以,如果输入是 (7, 24, 25), (5, 12, 13), (3, 4, 5),那么输出将是 (3, 4, 5), (5, 12, 13 ), (7, 24, 25)

示例

让我们看看以下实现以获得更好的理解 -

#include <stdio.h>

#define N 3

struct Triangle{

   int a, b, c;

};

int square(struct Triangle t){

    int a = t.a, b = t.b, c = t.c;

    return (a + b + c)*(a + b - c)*(a - b + c)*(-a + b + c);

}

void solve(struct Triangle* a){

    for (int i = 0; i < N; i++)

        for (int j = i + 1; j < N; j++)

            if (square(a[i]) > square(a[j])){

                struct Triangle temp = a[i];

                a[i] = a[j];

                a[j] = temp;

            }

}

int main(){

    struct Triangle triangles[N] = {{7, 24, 25}, {5, 12, 13}, {3, 4, 5}};

    solve(triangles);

    for (int i = 0; i < N; i++){

        printf("(%d, %d, %d)\n", triangles[i].a, triangles[i].b, triangles[i].c);

    }

}

输入

{{7, 24, 25}, {5, 12, 13}, {3, 4, 5}}
输出结果
(3, 4, 5)

(5, 12, 13)

(7, 24, 25)

以上是 基于面积对三角形进行排序的C程序 的全部内容, 来源链接: utcz.com/z/331636.html

回到顶部