-
C++で八面体の表面積を計算するプログラムの作成方法
八面体(オクタヘドロン)とは? 「Octahedron(八面体)」という言葉はギリシャ語に由来しています。「Octa」は「8」を、「hedron」は「面」を意味します。幾何学における八面体とは、8つの面を持つ3次元の正多面体(プラトンの立体)のことです。 他の立体図形と同様に、八面体にも以下のような特徴的な性質があります。 頂点の数:6個 辺の数:12本 面の数:8個(すべて正三角形) 以下は八面体の図です。 問題設定 一辺の長さが与えられたとき、その八面体の表面積を求めるプログラムを作成します。表面積とは、図形のすべての面が占める空間の総面積のことです。 八面体の表面積を計算するには
-
C++で立方体の体積と表面積を求めるプログラム
立方体とは? 立方体とは、正方形の面を6つ持つ三次元の立体図形です。すべての辺の長さが等しいという特徴があります。立方体は唯一の正六面体であり、以下のような性質を持ちます。 面の数:6つ 辺の数:12本 頂点の数:8つ 以下は立方体の図です。 問題の概要 立方体の一辺の長さが与えられたとき、その立方体の表面積と体積を求めることが課題です。ここで、表面積とは立方体の各面が占める面積の合計を指し、体積とはその図形が内包できる空間の大きさを指します。 立方体の表面積と体積を計算するには、次の公式を使用します。 表面積 = 6 × 辺 × 辺 体積 = 辺 × 辺 × 辺 入力例と出力例 入力
-
C++で直方体の体積と表面積を計算するプログラムの作成方法
直方体とは? 直方体とは、6つの長方形の面から構成される三次元の立体図形です。各面の縦と横の長さが異なるため、全体として異なる長さの辺を持っています。立方体と直方体の違いは、立方体では長さ・高さ・幅がすべて等しいのに対し、直方体ではこれら3つが必ずしも同じではないという点です。 直方体の主な性質は以下のとおりです。 6つの面 12本の辺 8つの頂点 以下は直方体のイメージ図です。 問題の概要 直方体の長さ(L)、幅(W)、高さ(H)が与えられたとき、その総表面積と体積を求めるのが課題です。表面積とは各面が占める空間の広さのことであり、体積とはその形状が内包できる空間の大きさのことです。
-
C++で正三角形の面積と周囲の長さを計算するプログラム
正三角形とは? その名の通り、正三角形とは3つの辺の長さがすべて等しく、内角もすべて60°で等しい三角形のことです。正多角形の一種であるため、「正多角形としての三角形(regular polygon)」とも呼ばれます。 正三角形には以下のような性質があります。 3つの辺の長さがすべて等しい すべての内角が同じ60°である 下記は正三角形の図です。 問題の概要 正三角形の1辺の長さが与えられたとき、その面積と周囲の長さを求めることが課題です。ここでいう面積とは図形が占める領域の広さを指し、周囲の長さ(外周)とは三角形の境界線の全長を指します。 正三角形の面積と周囲の長さは、それぞれ次の公
-
C++で正三角形の外接円の面積を計算するプログラム
正三角形とは、3つの辺の長さがすべて等しく、内角がすべて60度である三角形のことです。正多角形の一種であるため、「正三角形(regular triangle)」とも呼ばれています。正三角形の性質3辺の長さがすべて等しいすべての内角が同じ角度(60度)である外接円とは多角形の外接円(circumcircle)とは、その多角形のすべての頂点を通る円のことです。この円の半径は「外接半径(circumradius)」と呼ばれ、円の中心は「外心(circumcenter)」と呼ばれます。外心は三角形の内部にある場合もあれば、外部にある場合もあります。なお、正三角形の場合、外接円の半径は「a/√3」(aは
-
C++で2つの同心円の間の面積を計算する方法を解説
同心円とは?同心円とは、2つの円が共通の中心を共有しながら、半径の長さが異なる(r1 と r2、ただし r2 > r1)形状のことです。円の中に別の円が含まれているイメージで、2つの同心円の間の領域は「環(アニュラス)」と呼ばれます。以下は同心円の図です。問題半径の長さが異なる2つの同心円(r1 と r2、ただし r2 > r1)が与えられたとします。課題は、青色で強調表示された2つの円の間の面積を求めることです。2つの円の間の面積を計算するには、大きい円の面積から小さい円の面積を差し引きます。大きい円の半径を r2、小さい円の半径を r1 とすると、求める面積は次のようになります。入出力例入
-
C++で円錐台の体積と表面積を求めるプログラム
円錐台とは? 円錐台(えんせいだい)とは、円錐の先端部分を水平に切り落としたことでできる立体のことです。切り口の上底と、元の円錐の下底から構成されます。円錐台の各寸法は以下のように定義されます。 上底の半径:r 下底の半径:R 高さ:h 母線の長さ(斜高):L 問題 母線の長さ、高さ、上底の半径「r」、下底の半径「R」が与えられたとき、円錐台の体積と表面積を計算するのが課題です。 円錐台の体積と表面積は、以下の公式を使って求めることができます。 体積 (V) = 1/3 × π × h × (r² + R² + r×R) 側面積 (CSA) = π × l × (R + r) 表面積 (
-
C++で楕円体の体積を計算するプログラムの作成方法
3つの半径 r1、r2、r3 が与えられたとき、楕円体(だえんたい)の体積を求めるのが本記事の目的です。 楕円体とは、2次曲面の一種であり、「3つの変数を含む2次多項式のゼロ集合として定義できる曲面」として表されます。2次曲面の中でも、楕円体は以下のいずれかの性質によって特徴づけられます。 中心を通る任意の平面による断面が楕円(または円)になる 3つの互いに垂直な軸方向に異なる半径を持つ球面を伸縮した形状である 楕円体の体積を求める公式 楕円体の体積は、次の公式を使って計算できます。 楕円体の体積 = (4/3) × π × r1 × r2 × r3 これは球の体積公式 (4/3)πr³
-
C++でピラミッドの体積を計算するプログラムの作り方|底面の形状別の公式と実装例
ピラミッドの底面の種類に応じた辺の長さが与えられたとき、そのピラミッドの体積を計算するのが本記事のテーマです。 ピラミッドとは、外側の面がすべて三角形で構成され、それらが共通の一点(頂点)で交わることで鋭い角を形成する3次元図形です。ピラミッドの体積は、底面がどのような形状であるかによって異なります。 ピラミッドの底面にはさまざまな種類があり、代表的なものは以下の通りです。 底面の形状別の体積の求め方 三角形の底面(三角錐) 底面が三角形の場合、ピラミッドの体積は次の公式で求められます。 体積 = (1/6) × a × b × h 正方形の底面(四角錐) 底面が正方形の場合、ピラミッドの体
-
C++でnCr(組み合わせ)の値を計算するプログラム
本記事では、C++を使ってnCr(組み合わせ)の値を計算するプログラムを紹介します。ここで、Cは組み合わせ(Combination)を表し、nは全体の要素数、rはその集合から選び出す要素の数を意味します。組み合わせとは?組み合わせとは、与えられた集合から要素を選び出す際に、並び順を考慮しない選択方法のことです。よく混同されやすい「順列」との違いは、順列が要素の「並べ方」を扱うのに対し、組み合わせは単に「選び方」を扱うという点にあります。例えば、{A, B, C} から2つを選ぶ場合、「AB」と「BA」は順列では別物ですが、組み合わせでは同じ1通りとして数えます。nCrの計算式n個の中からr個を
-
C++でセンチメートルをメートル・キロメートルに変換するプログラムの作り方
センチメートル(cm)単位の長さが入力として与えられたとき、その値をメートル(m)およびキロメートル(km)に変換する方法を解説します。単位変換は日常的によく使われる処理であり、C++では簡単な割り算だけで実装できます。長さの換算式変換には、次の基本的な換算式を使用します。1 m = 100 cm 1 km = 100000 cmつまり、センチメートルの値を100で割ればメートルに、100000で割ればキロメートルに変換できます。変換例入力:centimeter = 300 出力:メートルでの長さ = 3m キロメートルでの長さ = 0.003kmアルゴリズム処理の流れは以下の通りです。
-
C++で対角行列・スカラー行列を判定するプログラムの書き方
行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表し、r = c のとき正方行列となります。本記事では、与えられた正方行列が対角行列であるか、スカラー行列であるかを判定し、該当する場合には「yes」を出力する方法を解説します。 対角行列とは 正方行列 m[][] が対角行列であるのは、主対角線以外の要素がすべてゼロである場合、かつその場合に限ります。 下図のように、赤色で示された要素が主対角成分(非ゼロ)であり、それ以外の要素はすべてゼロになっているため、この行列は対角行列です。 入出力例 Input: m[3][3] = { {7, 0, 0}, {0, 8, 0}
-
C++でべき等行列を判定するプログラムの作成方法
行数を r、列数を c とする行列 M[r][c] が与えられ、r = c となる正方行列を考えます。この記事では、与えられた正方行列がべき等行列(アイデンポテント行列)であるかどうかを判定するC++プログラムを解説します。 べき等行列とは 行列 M がべき等行列であるとは、行列 M と自分自身の積が元の行列 M と等しくなること、すなわち M × M = M が成り立つことを指します。 例えば、次の行列を見てください。 この行列を自分自身で掛け合わせても、結果は元の行列とまったく同じになります。したがって、この行列はべき等行列であると言えます。 べき等行列の代表的な例としては、ベクトルを
-
C++で対合行列(インボリュートリー行列)を判定するプログラムの実装方法
行列 M[r][c] が与えられたとき、「r」は行数、「c」は列数を表します。ここでは r = c、つまり正方行列である場合を考えます。この記事では、与えられた正方行列が対合行列(インボリュートリー行列)であるかどうかを判定する方法を解説します。 対合行列とは 対合行列とは、ある行列を自分自身と掛け合わせたとき、その積が単位行列になるような行列のことです。単位行列 I とは、主対角成分がすべて 1 で、それ以外の要素がすべて 0 である行列を指します。 したがって、行列 M が対合行列であるための必要十分条件は次のように表せます。 M × M = I ここで、M は任意の行列、I は単位行列で
-
C++で行列が下三角行列かどうかを判定するプログラム
行数 r と列数 c が等しい(r = c)正方行列 M[r][c] が与えられたとき、その行列 M が「下三角行列」であるかどうかを判定する方法を解説します。 下三角行列とは 下三角行列とは、主対角線(およびその下側)の要素が非ゼロであり、主対角線より上側の要素がすべてゼロである行列のことです。 次の図の例を見てみましょう。 上の図で赤く強調されている要素は主対角線より上側の要素で、これらはすべてゼロになっています。それ以外の要素は非ゼロです。 入力例と出力例 Input: m[3][3] = { {1, 0, 0}, {2, 3, 0}, &nbs
-
【C++入門】行列が上三角行列かどうかを判定するプログラムの書き方
正方行列 M[r][c](r は行数、c は列数、r = c)が与えられたとき、この行列 M が上三角行列であるかどうかを判定するプログラムを C++ で作成します。 上三角行列とは? 上三角行列とは、主対角線(対角成分)およびその上側の要素は非ゼロであり、主対角線より下側の要素がすべてゼロであるような行列のことです。 下図の例を見てみましょう。 この図では、赤く強調された要素が主対角線より下側の要素にあたり、これらがすべてゼロになっています。それ以外の要素(主対角線上およびその上側)は非ゼロです。このような行列が上三角行列と呼ばれます。 入力例と出力例 入力: m[3][3] = { {1
-
【C++】行列がマルコフ行列かどうかを判定するプログラムの作り方
r 行 × c 列の行列 M[r][c] が与えられたとき、それがマルコフ行列であるかどうかを判定します。マルコフ行列であれば「It is a Markov matrix(マルコフ行列です)」と出力し、そうでなければ「its not a Markov matrix(マルコフ行列ではありません)」と出力するプログラムを作成しましょう。 マルコフ行列とは? マルコフ行列(Markov Matrix)とは、各行の要素の合計がちょうど 1 になる行列のことです。確率遷移行列とも呼ばれ、状態間の遷移確率を扱うマルコフ連鎖などの確率モデルで広く利用されています。 たとえば、次のような行列を見てみましょう
-
C++で行列がバイナリ行列(二値行列)かどうかを判定するプログラム
バイナリ行列とは?バイナリ行列(Binary Matrix)とは、構成するすべての要素が 0 または 1 のいずれかである行列のことです。ブール行列(Boolean Matrix)、関係行列(Relational Matrix)、論理行列(Logical Matrix)と呼ばれることもあります。以下に例を示します。$$\begin{bmatrix} 0 & 1 & 0 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \\ \end {bmatrix}\:\:\:\:\:\:\:\:\: \begin{bmatrix} 0 & 3 &a
-
C++で行列が対称行列かどうかを判定するプログラム
対称行列とは線形代数において、行列 M[][] が「対称行列(symmetric matrix)」であるとは、その転置行列が元の行列と完全に等しい場合を指します。転置行列とは、行列を対角線を軸として裏返す操作であり、これにより行と列のインデックスが入れ替わります。以下に対称行列の例を示します。$$\begin{bmatrix} 1 & 4 & 7 \\ 4 & 5 & 6 \\ 7 & 6 & 9 \\ \end {bmatrix} \Rightarrow \begin{bmatrix} 1 & 4 & 7 \\ 4 &
-
C++で連結リスト内の最小値・最大値の素数を求める方法
問題文n個の正の整数からなる連結リストが与えられます。このリストの中から、値が最小の素数と最大の素数を見つける必要があります。例えば、次のようなリストが与えられた場合 −10 -> 4 -> 1 -> 12 -> 13 -> 7 -> 6 -> 2 -> 27 -> 33この場合、最小の素数は 2、最大の素数は 13 となりますアルゴリズム1. 与えられた数の中から最大値を求める(これを maxNumber と呼ぶ)2. 1 から maxNumber までの素数を生成し、動的配列に格納する3. 連結リストを走査し、動的配列を参照して最小値・