C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例
ピラミッドの底面の種類に応じた辺の長さが与えられたとき、そのピラミッドの体積を計算するのが本記事のテーマです。
ピラミッドとは、外側の面がすべて三角形で構成され、それらが共通の一点(頂点)で交わることで鋭い角を形成する3次元図形です。ピラミッドの体積は、底面がどのような形状であるかによって異なります。
ピラミッドの底面にはさまざまな種類があり、代表的なものは以下の通りです。
底面の形状別の体積の求め方
三角形の底面(三角錐)
底面が三角形の場合、ピラミッドの体積は次の公式で求められます。
体積 = (1/6) × a × b × h
正方形の底面(四角錐)
底面が正方形の場合、ピラミッドの体積は次の公式で求められます。
体積 = (1/3) × b2 × h
五角形の底面(五角錐)
底面が五角形の場合、ピラミッドの体積は次の公式で求められます。
体積 = (5/6) × a × b × h
六角形の底面(六角錐)
底面が六角形の場合、ピラミッドの体積は次の公式で求められます。
体積 = a × b × h
ここで、a は底面の一辺の長さ、b は底面の幅(または辺心距離)、h はピラミッドの高さを表します。
入出力例
入力:a = 4、b = 2、h = 10 出力: 三角形の底面を持つピラミッドの体積:13.328 正方形の底面を持つピラミッドの体積:13.2 五角形の底面を持つピラミッドの体積:66.4 六角形の底面を持つピラミッドの体積:80
以下は正方形を底面とするピラミッドのイメージです。

アルゴリズム
- 三角錐の体積を求める関数
volumeTriangular(int a, int b, int h)を宣言し、volume = 0.1666 × a × b × hを計算して返します。 - 四角錐の体積を求める関数
volumeSquare(int b, int h)を宣言し、volume = 0.33 × b × b × hを計算して返します。 - 五角錐の体積を求める関数
volumePentagonal(int a, int b, int h)を宣言し、volume = 0.83 × a × b × hを計算して返します。 - 六角錐の体積を求める関数
volumeHexagonal(int a, int b, int h)を宣言し、volume = a × b × hを計算して返します。 main()関数内で変数a = 4、b = 2、h = 10を宣言し、上記4つの関数を順に呼び出して結果を出力します。
C++による実装例
#include <bits/stdc++.h>
using namespace std;
// 三角錐の体積を求める関数
float volumeTriangular(int a, int b, int h){
float volume = (0.1666) * a * b * h;
return volume;
}
// 四角錐の体積を求める関数
float volumeSquare(int b, int h){
float volume = (0.33) * b * b * h;
return volume;
}
// 五角錐の体積を求める関数
float volumePentagonal(int a, int b, int h){
float volume = (0.83) * a * b * h;
return volume;
}
// 六角錐の体積を求める関数
float volumeHexagonal(int a, int b, int h){
float volume = a * b * h;
return volume;
}
int main(){
int b = 2, h = 10, a = 4;
cout << "三角形の底面を持つピラミッドの体積:" << volumeTriangular(a, b, h) << endl;
cout << "正方形の底面を持つピラミッドの体積:" << volumeSquare(b, h) << endl;
cout << "五角形の底面を持つピラミッドの体積:" << volumePentagonal(a, b, h) << endl;
cout << "六角形の底面を持つピラミッドの体積:" << volumeHexagonal(a, b, h);
return 0;
}
実行結果
三角形の底面を持つピラミッドの体積:13.328 正方形の底面を持つピラミッドの体積:13.2 五角形の底面を持つピラミッドの体積:66.4 六角形の底面を持つピラミッドの体積:80
まとめ
ピラミッドの体積は、いずれも「底面積 × 高さ ÷ 3」を基本とした公式で求められます。底面の形状(三角形・正方形・五角形・六角形)に応じて係数が変化する点に注意しながら、適切な公式を選んで計算することが重要です。本記事のように関数を分けて実装すれば、コードの可読性と再利用性も向上します。
-
C++で十二面体の表面積を計算するプログラム
十二面体とは? 「十二面体(dodecahedron)」という言葉は、ギリシャ語に由来しています。「dodeca」は「12」、「hedron」は「面」を意味します。幾何学における十二面体とは、12枚の平面から構成される3次元の正多面体(プラトンの立体)のことです。 他の立体図形と同様に、十二面体にも以下のような特徴的な性質があります。 20個の頂点 30本の辺 12枚の正五角形の面(五角形は5つの辺を持つ多角形) 以下は十二面体の図です。 問題 一辺の長さが与えられたとき、その十二面体の表面積を求めるプログラムを作成します。ここでいう表面積とは、図形のすべての面が占める空間の総面積のこ
-
C++で学ぶクイックソート(QuickSort)の仕組みと実装方法
クイックソートとはクイックソート(Quicksort)は、比較に基づいて未ソートのリスト(配列)を並べ替えるソートアルゴリズムの一つです。「パーティション交換ソート(partition exchange sort)」とも呼ばれます。クイックソートは安定ソートではありません。これは、等しい値を持つ要素同士の相対的な順序が保持されないためです。ただし、配列に対してごくわずかな追加メモリだけで動作するため、メモリ効率に優れています。選択ソートと非常に似ていますが、常に最悪のパーティションを選んでしまうわけではない点が異なり、より洗練された形の選択ソートと捉えることもできます。クイックソートは最も効率