アルゴリスム – 合計と平均値を計算する

数値の合計を計算する

複数の数値を合計するには、以下のように単純に数値を足し算すれば計算できます。

sum = 値1+値2+値3+値4+値5

これでも構わないのですが、数が100個、1000個のように多くなれば、足し算する処理を書くのに手間がかかり大変です。

そこで、足し算する処理に反復処理を使います。

例えば、人間が合計を計算する場合、どのような手順で計算するか考えてみましょう。

  1. まず、値1と値2を足し算します。その値を控えます。
  2. 次に、控えた値と値3の足し算をして、その値を控えます。
  3. さらに2で控えた値と値4を足し算して、その値を控えます。

これを最後の数値まで繰り返すと合計を求める事ができます。

この手順と同じように反復処理を使って足し算を繰り返し計算するアルゴリズムを考えます。

合計を計算するイメージ

反復処理を使って合計を計算するイメージは以下の図のようになります。

[n個の数値を合計する]

n個の数値を合計するイメージ

配列のインデックスは0から始まるのでn個の要素を繰り返し参照するには以下のように指定します。

  • インデックス用の変数iを0で初期化する。
  • 繰り返し条件は(i < n)にする。

繰り返し条件の比較を要素数ではなくインデックス番号で指定する場合は、(i <= n-1)のように指定します。

平均値を計算する

平均値(Average)を計算するには、合計した値を個数で割った値になります。

サンプルコード

合計と平均値を計算するアルゴリズムを以下のプログラミング言語で紹介します。

  • Tcl
  • Python

サンプルコードについて

各プログラミング言語の基本的な制御構造とデータ構造を使って記述しています。

必要であれば、for, foreach、リスト、配列などに書き換えたり、関数化を行って練習してください。

Tcl

[配列を使った例:avg.tcl]

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

# 合計と平均値を計算する

# arr : 数値リスト
#  n  : 要素数
#  i  : 要素のindex
# sum : 合計
# avg : 平均値(Average)

array set arr {0 11 1 12 2 13 3 14 4 15}
set n [array size arr]

set sum 0
set   i 0

while {$i < $n} {
    set sum [expr $sum + $arr($i)]
    incr i
}

set avg [expr $sum.0 / $n]
puts "合計:$sum 平均値:$avg"

[実行例]

$ ./avg.tcl
合計:65 平均値:13.0

[リスト、foreachを使った例:avg2.tcl]

#!/bin/sh
# the next line restarts using tclsh \
exec tclsh "$0" "$@"

# 合計と平均値を計算する

# lst : 数値リスト
#  n  : 要素数
# sum : 合計
# avg : 平均値(Average)

set lst {11 12 13 14 15}
set n [llength $lst]

set sum 0

foreach x $lst {
    set sum [expr $sum + $x]
}

set avg [expr $sum.0 / $n]
puts "合計:$sum 平均値:$avg"

[実行例]

$ ./avg2.tcl
合計:65 平均値:13.0

Python

[whileを使った例:avg.py]

#!/usr/bin/env python3

# 合計と平均値を計算する

# lst : 数値リスト
#  n  : 要素数
#  i  : 要素のindex
# sum : 合計
# avg : 平均値(Average)

lst = [11, 12, 13, 14, 15]
n = len(lst)

sum = 0
i = 0

while i < n:
    sum = sum + lst[i]
    i += 1

avg = sum/n
print('Total   = ', sum)
print('Average = ', avg)

[実行例]

$ ./avg.py
Total   =  65
Average =  13.0

[forを使った例:avg2.py]

#!/usr/bin/env python3

# 合計と平均値を計算する

# lst : 数値リスト
#  n  : 要素数
# sum : 合計
# avg : 平均値(Average)

lst = [11, 12, 13, 14, 15]
n = len(lst)

sum = 0

for num in lst:
    sum = sum + num

avg = sum/n
print('Total   = ', sum)
print('Average = ', avg)

[実行例]

$ ./avg2.py
Total   =  65
Average =  13.0

コメント

タイトルとURLをコピーしました