Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

면적을 기준으로 삼각형을 정렬하는 C 프로그램

<시간/>

삼각형[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)

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 변, 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
  • j 초기화의 경우:=i + 1, j
  • 만약 정사각형(a[i])> 정사각형(a[j])이면:
    • a[i]와[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)\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)