Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 프로그램으로 세 변이 주어진 삼각형의 외접원 넓이 구하기

삼각형의 세 변의 길이가 주어졌을 때, 해당 삼각형의 외접원(circumcircle) 넓이를 C++ 프로그램으로 구하는 방법을 알아보겠습니다. 그 전에 문제 해결에 필요한 기본 개념부터 짚고 넘어가겠습니다.

기본 개념 정리

삼각형(Triangle)

세 개의 변으로 이루어진 닫힌 도형입니다.

원(Circle)

변이 없거나 무수히 많은 변을 가진 것으로 볼 수 있는 닫힌 곡선 도형입니다.

외접원(Circumcircle)

다른 도형을 내부에 포함하는 바깥쪽의 원을 의미합니다. 삼각형의 외접원은 세 꼭짓점을 모두 지나며, 삼각형 전체를 그 안에 담고 있습니다.

외접원의 반지름 공식

삼각형의 세 변을 a, b, c라 하고, 반둘레(semi-perimeter)를 s = (a + b + c) / 2라고 할 때, 외접원의 반지름 R은 다음 공식으로 구할 수 있습니다.

R = abc / (4 × √(s(s − a)(s − b)(s − c)))

여기서 √(s(s − a)(s − b)(s − c))는 헤론의 공식으로 계산한 삼각형의 넓이 K입니다. 즉, R = abc / 4K라는 관계식을 활용한 것입니다.

반지름이 R인 원의 넓이는 다음과 같습니다.

Area = π × R²

손으로 풀어보는 예시

세 변이 a = 4, b = 5, c = 3인 삼각형을 예로 들어 보겠습니다.

  • 반둘레: s = (4 + 5 + 3) / 2 = 6
  • 삼각형의 넓이: K = √(6 × 2 × 1 × 3) = 6
  • 외접원의 반지름: R = (4 × 5 × 3) / (4 × 6) = 2.5
  • 외접원의 넓이: 3.14 × 2.5 × 2.5 = 19.625

C++ 구현 예제

#include <iostream>
#include <math.h>
using namespace std;

int main() {
    float a = 7, b = 9, c = 13;

    if (a < 0 || b < 0 || c < 0) {
        cout << "The figure is not a triangle";
        return 0;
    }

    float s = (a + b + c) / 2;                       // 반둘레
    float k = sqrt(s * (s - a) * (s - b) * (s - c)); // 삼각형의 넓이
    float r = (a * b * c) / (4 * k);                 // 외접원의 반지름
    float area = 3.14 * pow(r, 2);                   // 외접원의 넓이

    cout << "The area is " << area;
    return 0;
}

실행 결과

The area is 146.72

a = 7, b = 9, c = 13일 때 반둘레 s = 14.5, 삼각형의 넓이 K ≈ 29.95이므로 외접원의 반지름 R ≈ 6.84가 되고, 최종적으로 외접원의 넓이는 약 146.72로 출력됩니다. 음수인 변이 입력되면 삼각형이 성립하지 않으므로, 유효성 검사를 통해 이를 먼저 걸러내도록 처리했습니다.