C言語で六角柱の表面積と体積を計算する方法
「表面積」とは、立体図形の表面が覆っている面積の合計のことです。この記事では、C言語を使って六角柱の表面積と体積を計算する方法を、公式の意味からサンプルコード、実行結果まで順を追って解説します。
六角柱とは?
六角柱とは、上下の底面に六角形を持ち、側面に6枚の長方形が連なった立体図形のことです。数学的には、六角柱は「8つの面・18本の辺・12個の頂点」を持つ三次元図形として定義されています。
- 面: 8枚(六角形の底面2枚 + 長方形の側面6枚)
- 辺: 18本
- 頂点: 12個

表面積・体積を求める公式
六角形の一辺の長さを a、柱の高さを h とすると、六角柱の表面積と体積はそれぞれ次の式で求められます。
表面積 = 6ah + 3√3 × a² 体積 = (3√3 / 2) × a² × h
「6ah」は6枚の長方形側面の合計面積、「3√3 × a²」は上下の正六角形2枚分の合計面積に相当します。
C言語での実装例
ここでは、一辺 a = 5、高さ h = 10 の六角柱を例に計算してみましょう。√3 のような平方根の計算には、math.h ヘッダーで提供されている sqrt() 関数を使用します。
#include <stdio.h>
#include <math.h>
int main() {
float a = 5, h = 10;
// 六角柱の表面積を求めるロジック
float Area;
Area = 6 * a * h + 3 * sqrt(3) * a * a;
printf("Surface Area: %f\n", Area);
// 六角柱の体積を求めるロジック
float Volume;
Volume = 3 * sqrt(3) * a * a * h / 2;
printf("Volume: %f\n", Volume);
return 0;
}
実行結果
Surface Area: 429.903809 Volume: 649.519043
コードのポイント
float a = 5, h = 10;の部分で一辺の長さと高さを設定しています。値を変更すれば、任意のサイズの六角柱に対応できます。sqrt(3)は √3(約1.732)を返す関数です。使用するには、冒頭で#include <math.h>を記述する必要があります。- 計算結果は
%f書式指定子により、小数点以下6桁で出力されます。
このように、六角柱の表面積と体積は、基本的な数式とC言語の標準ライブラリ関数を組み合わせるだけで簡単に求めることができます。ぜひ自分でも数値を変えて試してみてください。
-
直方体の表面積と体積を求めるJavaプログラム
この記事では、直方体の表面積と体積を計算するJavaプログラムの書き方について詳しく解説します。直方体とは、6つの長方形の面で構成される三次元の立体のことであり、各辺の長さ・幅・高さがそれぞれ異なる場合があります。立方体と直方体の違いは、立方体では長さ・高さ・幅がすべて等しいのに対し、直方体ではこれら3つの寸法が必ずしも同じではないという点です。直方体の表面積と体積の計算式直方体の表面積は、次の式で求めることができます。2*(縦 × 横 + 横 × 高さ + 高さ × 縦)直方体の体積は、次の式で求めることができます。縦 × 横 × 高さ以下に具体的な計算例を示します。入力Length = 6
-
Javaで学ぶメモ化(1次元・2次元・3次元)動的計画法の基礎と実装
メモ化(Memoization)は動的計画法に基づく技法の一つで、同じ入力に対して同じ計算を二度以上実行しないようにすることで、再帰アルゴリズムの性能を向上させるためのものです。具体的には、引数ごとの計算結果を配列などのキャッシュに記録しておき、同じ入力で再度呼び出された際には保存済みの結果を即座に返します。メモ化は、再帰メソッドをトップダウン方式で実装することで実現できます。ここでは、基本的なフィボナッチ数列の例を通じて、この仕組みを順を追って理解していきましょう。1次元(1-D)メモ化値が変化する非定数のパラメータが1つだけの再帰アルゴリズムにメモ化を適用する場合、これを1次元(1-D)メ