基于面积对三角形进行排序的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)