C++で算術平均(平均値)を求める方法
算術平均とは、いわゆる「数値の平均」のことです。本記事では、C++を使って複数の数値から算術平均を求める方法を解説します。
ここで作成する関数は、数値の集合(配列)とその要素数を受け取ります。処理内容はシンプルで、各要素をすべて足し合わせ、最後に要素数で割るだけです。
算術平均の基本式
算術平均は次の式で表されます。
算術平均 = (全要素の合計) ÷ (要素数)
アルゴリズム
arithmeticMean(dataset, n)
まず、処理の手順を擬似コードで確認しましょう。
begin sum := 0 for each element e from dataset, do sum := sum + e done return sum/n end
手順は以下の通りです。
1. 合計値を格納する変数 sum を 0 で初期化する
2. データセット内の各要素 e を順番に sum に加算していく
3. すべての要素を加算し終えたら、sum を要素数 n で割った値を返す
C++での実装例
それでは、実際にC++のコードを見てみましょう。
#include<iostream>
using namespace std;
float arithmetic_mean(float data[], int size) {
float sum = 0;
for(int i = 0; i<size; i++) {
sum += data[i];
}
return sum/size;
}
main() {
float data_set[] = {25.3, 45.21, 78.56, 96.21, 22.12, 36.97};
cout << "Mean: " << arithmetic_mean(data_set, 6);
}このプログラムでは、arithmetic_mean 関数が float 型の配列とそのサイズを受け取ります。for ループで配列の全要素を加算し、最後に要素数で割った結果を返しています。main 関数では6つの実数からなるデータセットを用意し、関数を呼び出して平均値を出力します。
実行結果
Mean: 50.7283
{25.3, 45.21, 78.56, 96.21, 22.12, 36.97} の合計は 304.37 となり、これを要素数 6 で割ると約 50.7283 が得られます。
補足:より安全な実装について
上記のコードは理解のためのシンプルな例ですが、実用的なプログラムでは以下の点に注意するとより堅牢になります。
- 要素数チェック: size が 0 の場合、ゼロ除算が発生するため、事前に判定してエラー処理を行う
- main関数の戻り値: 標準規格では main は int 型を返すべきため、int main() と宣言するのが望ましい
- オーバーフロー対策: 大量のデータや大きな値を扱う場合は、double 型や long double 型の使用を検討する
このように、算術平均の計算は「合計を求めて要素数で割る」という基本的な操作だけで実装できます。統計処理やデータ分析の入門として、ぜひ実際にコードを書いて試してみてください。
-
C++でアリコート和(Aliquot Sum)を計算する方法
本記事では、アリコート和(Aliquot Sum)とは何かを解説します。アリコート和とは、ある数 n の約数のうち、n 自身を除いたすべての約数の総和のことです。例えば、数値が 20 の場合、その約数は (1, 2, 4, 5, 10) となるため、アリコート和は 22 になります。興味深い点として、アリコート和がその数自身と等しくなる場合、その数は「完全数」と呼ばれます。例えば 6 の場合、約数は (1, 2, 3) であり、アリコート和は 1 + 2 + 3 = 6 となるため、6 は完全数です。それでは、以下のアルゴリズムを使ってアリコート和を求める方法を見ていきましょう。アルゴリズムg
-
C++でポインタ演算を使って配列要素の合計を求める方法
この記事では、C++においてポインタ演算を利用して配列要素の合計を求めるプログラムを紹介します。C++では配列名は先頭要素へのポインタとして扱えるため、*(ptr + i) のように記述することで、添字演算子を使わずに各要素へアクセスできます。 アルゴリズム 開始 ユーザーからの入力値で配列要素を初期化する 合計を格納する変数 s を 0 で初期化する i = 0 から 6 まで繰り返す s = s + *(ptr + i) 変数 s に格納された合計値を出力する 終了 サンプルコード #include<iostream> using