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

C++로 정사각형에 내접하는 최대 팔각형의 변의 길이 구하기

개요

이번 글에서는 주어진 정사각형 안에 내접하는 팔각형의 변의 길이를 구하는 C++ 프로그램을 살펴보겠습니다.

정사각형의 한 변의 길이가 입력으로 주어지며, 목표는 그 정사각형 안에 그릴 수 있는 가장 큰 팔각형의 변의 길이를 계산하는 것입니다.

공식 유도

정사각형의 네 꼭짓점을 대칭적으로 잘라내면 정팔각형을 만들 수 있습니다. 이때 잘려나가는 각 부분은 이등변 직각삼각형이 되는데, 이 기하학적 관계를 정리하면 정사각형의 변(a)과 팔각형의 변(s) 사이에 다음과 같은 관계가 성립합니다.

s = a / (√2 + 1)

즉, 정사각형의 변의 길이를 (√2 + 1)로 나누어 주면, 해당 정사각형에 내접하는 최대 팔각형의 변의 길이를 바로 구할 수 있습니다.

C++ 구현 예제

#include <bits/stdc++.h>
using namespace std;
// 팔각형의 변의 길이를 계산하는 함수
float calc_oside(float a) {
   if (a < 0)
      return -1;
   float s = a / (sqrt(2) + 1);
      return s;
}
int main() {
   float a = 41;
   cout << calc_oside(a) << endl;
   return 0;
}

실행 결과

16.9828

위 예제에서는 한 변의 길이가 41인 정사각형이 주어졌습니다. 41 / (√2 + 1) ≈ 16.9828이므로, 이 정사각형에 내접하는 최대 팔각형의 변의 길이는 약 16.9828입니다. 또한 함수 내에서 음수 입력값에 대한 예외 처리를 통해 잘못된 값이 들어오면 -1을 반환하도록 하였습니다.