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

C++로 정이십면체의 넓이와 부피를 구하는 프로그램 작성하기


이 문제에서는 정이십면체의 한 변의 길이를 나타내는 값이 주어집니다. 우리의 과제는 C++를 사용하여 정이십면체의 표면적(넓이)과 부피를 계산하는 프로그램을 작성하는 것입니다.

정이십면체(Icosahedron)는 정다면체의 하나로, 크기가 모두 같은 정삼각형 면 20개로 이루어진 입체 도형입니다. 모서리는 총 30개이며, 꼭짓점은 12개입니다.

C++로 정이십면체의 넓이와 부피를 구하는 프로그램 작성하기

그림에서 점선으로 표시된 부분은 보이는 면 뒤쪽에 위치한 모서리들을 나타냅니다.

예시를 통해 문제를 자세히 이해해 보겠습니다.

입력

a = 4

해결 접근 방법

이 문제는 기하학적으로 이미 유도된 정이십면체의 넓이와 부피 공식을 활용하면 간단하게 해결할 수 있습니다. 한 변의 길이를 a라고 할 때, 각 공식은 다음과 같습니다.

표면적(Area) = $5\sqrt{3}a^2 \approx 8.660 \times a^2$

부피(Volume) = $\frac{5}{12}(3+\sqrt{5})a^3 \approx 2.1817 \times a^3$

즉, 입력받은 한 변의 길이에 상수 값을 곱하는 연산만으로 표면적과 부피를 손쉽게 구할 수 있습니다.

위 해결 방법의 동작을 보여주는 프로그램입니다.

예제 코드

#include <iostream>
using namespace std;
float calcIcoSArea(float a) {
   return (8.660 * a * a);
}
float calcIcoVolume(float a) {
   return (2.1817 * a * a * a);
}
int main(){
   float a = 7;
   cout<<"The length of side of icosahedron is "<<a<<endl;
   cout<<"The surface area of icosahedron is "<<calcIcoSArea(a)<<endl;
   cout<<"The volume of icosahedron is "<<calcIcoVolume(a)<<endl;
   return 0;
}

실행 결과

The length of side of icosahedron is 7
The surface area of icosahedron is 424.34
The volume of icosahedron is 748.323

위 코드에서 calcIcoSArea() 함수는 표면적을, calcIcoVolume() 함수는 부피를 계산합니다. 한 변의 길이가 7일 때 표면적은 약 424.34, 부피는 약 748.323으로 출력되는 것을 확인할 수 있습니다.