C++
 Computer >> コンピューター >  >> プログラミング >> C++

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

以下は正方形を底面とするピラミッドのイメージです。

C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例

アルゴリズム

  1. 三角錐の体積を求める関数 volumeTriangular(int a, int b, int h) を宣言し、volume = 0.1666 × a × b × h を計算して返します。
  2. 四角錐の体積を求める関数 volumeSquare(int b, int h) を宣言し、volume = 0.33 × b × b × h を計算して返します。
  3. 五角錐の体積を求める関数 volumePentagonal(int a, int b, int h) を宣言し、volume = 0.83 × a × b × h を計算して返します。
  4. 六角錐の体積を求める関数 volumeHexagonal(int a, int b, int h) を宣言し、volume = a × b × h を計算して返します。
  5. main() 関数内で変数 a = 4b = 2h = 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」を基本とした公式で求められます。底面の形状(三角形・正方形・五角形・六角形)に応じて係数が変化する点に注意しながら、適切な公式を選んで計算することが重要です。本記事のように関数を分けて実装すれば、コードの可読性と再利用性も向上します。

  1. C++で十二面体の表面積を計算するプログラム

    十二面体とは? 「十二面体(dodecahedron)」という言葉は、ギリシャ語に由来しています。「dodeca」は「12」、「hedron」は「面」を意味します。幾何学における十二面体とは、12枚の平面から構成される3次元の正多面体(プラトンの立体)のことです。 他の立体図形と同様に、十二面体にも以下のような特徴的な性質があります。 20個の頂点 30本の辺 12枚の正五角形の面(五角形は5つの辺を持つ多角形) 以下は十二面体の図です。 問題 一辺の長さが与えられたとき、その十二面体の表面積を求めるプログラムを作成します。ここでいう表面積とは、図形のすべての面が占める空間の総面積のこ

  2. C++で学ぶクイックソート(QuickSort)の仕組みと実装方法

    クイックソートとはクイックソート(Quicksort)は、比較に基づいて未ソートのリスト(配列)を並べ替えるソートアルゴリズムの一つです。「パーティション交換ソート(partition exchange sort)」とも呼ばれます。クイックソートは安定ソートではありません。これは、等しい値を持つ要素同士の相対的な順序が保持されないためです。ただし、配列に対してごくわずかな追加メモリだけで動作するため、メモリ効率に優れています。選択ソートと非常に似ていますが、常に最悪のパーティションを選んでしまうわけではない点が異なり、より洗練された形の選択ソートと捉えることもできます。クイックソートは最も効率