이 문제에서는 주어진 변의 길이를 가지는 n변 정다각형의 면적을 구하기 위해 공식을 직접 유도하고, 이를 바탕으로 C++ 프로그램을 작성해 보겠습니다. 그 전에 기본 개념부터 간단히 짚고 넘어가면 주제를 훨씬 쉽게 이해할 수 있습니다.
기본 개념
n변 정다각형(regular polygon)이란 모든 변의 길이와 모든 내각의 크기가 같은 n개의 변을 가진 다각형을 말합니다. 대표적인 예로 정오각형, 정육각형 등이 있습니다.
면적(area)은 어떤 2차원 도형이 차지하는 크기를 수치로 나타낸 값입니다.

면적 공식 유도하기
정다각형의 중심에서 인접한 두 꼭짓점을 연결하면, 다각형은 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 함수는 라디안 단위의 값을 입력받기 때문입니다.