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

cserver side programmingprogramming

假设我们有一个不同三角形的数组,其中的三角形[i] = [ai, bi, ci] 是第 i 个三角形的边。我们必须基于三角形的面积对它们进行排序。使用边计算三角形面积的方法是:p*(p-a)*(p-b)*(p-c) 的平方根,其中 p = (a+b+c)/2。

因此,如果输入为 (7, 24, 25), (5, 12, 13), (3, 4, 5),则输出为 (3, 4, 5), (5, 12, 13), (7, 24, 25)

为了解决这个问题,我们将遵循以下步骤 −

  • 用边 a、b 和 c 定义三角形对象
  • 定义一个函数 square(),它将采用三角形 t,
  • a := t.a
  • b := t.b
  • c := t.c
  • 返回 (a + b + c) * (a + b - c) * (a - b + c) * (-a + b + c)
  • 从主方法中,执行以下操作:
  • 对于初始化 i := 0,当 i < N 时,更新(将 i 增加 1),执行以下操作:
    • 对于初始化 j := i + 1,当 j < N 时,更新(将 j 增加 1),执行以下操作:
      • 如果 square(a[i]) > square(a[j]),则:
        • 交换 a[i] 和 a[j]

示例

让我们看看下面的实现以便更好地理解 −

#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)
", 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)

相关文章