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

C++로 계산하는 주어진 변의 길이를 가진 n변 정다각형의 면적

이 문제에서는 주어진 변의 길이를 가지는 n변 정다각형의 면적을 구하기 위해 공식을 직접 유도하고, 이를 바탕으로 C++ 프로그램을 작성해 보겠습니다. 그 전에 기본 개념부터 간단히 짚고 넘어가면 주제를 훨씬 쉽게 이해할 수 있습니다.

기본 개념

n변 정다각형(regular polygon)이란 모든 변의 길이와 모든 내각의 크기가 같은 n개의 변을 가진 다각형을 말합니다. 대표적인 예로 정오각형, 정육각형 등이 있습니다.

면적(area)은 어떤 2차원 도형이 차지하는 크기를 수치로 나타낸 값입니다.

C++로 계산하는 주어진 변의 길이를 가진 n변 정다각형의 면적

면적 공식 유도하기

정다각형의 중심에서 인접한 두 꼭짓점을 연결하면, 다각형은 n개의 동일한 삼각형으로 나뉩니다. 따라서 이 도형의 면적을 구하려면 한 개의 삼각형 면적을 구한 뒤 변의 개수 n을 곱해주면 됩니다.

위 그림을 보면, 정다각형의 각 변은 밑변이 a(다각형의 한 변의 길이)이고 꼭짓점의 절반 각도가 180/n(n은 다각형의 변의 개수)인 하나의 삼각형을 형성합니다. 삼각형의 높이 h는 다음과 같습니다.

h = a / (2 × tan(180/n))

삼각형의 넓이 공식은 다음과 같습니다.

삼각형의 면적 = ½ × 밑변 × 높이

여기에 값을 대입하면,

삼각형의 면적 = ½ × a × a / (2 × tan(180/n))
= a² / (4 × tan(180/n))

이 공식을 다각형을 이루는 각 삼각형에 적용하고 변의 개수를 곱하면, 정다각형 전체의 면적을 구할 수 있습니다.

n변 정다각형의 면적 = n × (a² / (4 × tan(180/n)))

알고리즘

1단계 : (180 / n)을 이용해 각도 값을 계산한다.
2단계 : n × (a × a / (4 × tan(180/n))) 공식으로 정다각형의 면적을 계산한다.
3단계 : 계산된 다각형의 면적을 출력한다.

C++ 예제 코드

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    float a = 12, n = 9;
    float area=(a * a * n) / (4 * tan((180 / n) * 3.14159 / 180));
    cout<<"The area of "<<n<<" sided regular polygon of side "<<a<<" is "<<area;
    return 0;
}

실행 결과

The area of 9 sided regular polygon of side 12 is 890.183

위 예제에서는 변의 길이가 12인 정구각형(9변 다각형)의 면적을 계산하여 약 890.183이라는 결과를 얻었습니다. 코드에서 각도를 라디안으로 변환하기 위해 π(3.14159)를 곱해준 점에 유의하세요. tan 함수는 라디안 단위의 값을 입력받기 때문입니다.