C初級:配列の利用例とメリット

C言語初級カテゴリのロゴ画像 C言語初級

配列の利用例とメリットについて数値配列を使ったプログラムを交えて解説します。

数値配列の利用例

配列に代入した5つの数値を合計して表示するサンプルです。

hairetsu_gokei.c

/* 配列に代入した5つの数値を合計して表示する */
#include <stdio.h>
int main(void)
{
	int i, gokei;
	int suti[] = {1, 2, 3, 4, 5};

	gokei = 0;
	for(i=0; i<5; i++){
		gokei += suti[i];
		printf("suti[%d] = %d\n", i, suti[i]);
	}
	printf("\n\n合計は、%dです\n", gokei);

	return 0;
}

実行結果

suti[0] = 1
suti[1] = 2
suti[2] = 3
suti[3] = 4
suti[4] = 5

合計は、15です

配列はループ処理と組み合わせて使うと利用価値があがる、と言えます。
上記プログラムで言えば、配列の添え字部分に for文のカウンタ変数である i を利用している部分です。

gokei += suti[i];

上記は、 gokei = gokei + suti[i]; の省略形なので、添え字の i は、ループの中で 0, 1, 2, 3, 4 と変化し、結果的に配列sutiの先頭から順に末尾までの値を変数 gokei に加算しています。

配列を使うメリット

配列の添え字をうまく利用すると要素数が変化してもプログラムの修正が少なくできるメリットがあります

例えば変数に代入した10人分の身長の平均値を求めたいとします。

通常の変数で作ると

hairetsu_merit1.c

/* 10人分の身長の平均を求める */
#include <stdio.h>

int main(void)
{
	double	a = 160.4, b = 178.0, c = 153.5, d = 183.5, e = 164.3,
			f = 170.0, g = 192.1, h = 173.8, i = 169.0, j = 190.4;
	double heikin;

	heikin = (a + b + c + d + e + f + g + h + i + j) / 10.0;
	printf("平均は%fcmです\n", heikin);

	return 0;
}

実行結果

平均は173.500000cmです

などとなります。

上記のように10人分くらいであればなんとかなります。
しかし人数が100人や1000人となるとどうでしょうか?
変数名などを付ける際や、計算式の変更が大変です。

そこで配列の出番です。

配列を使うと

hairetsu_merit2.c

/* 10人分の身長の平均を求める */
#include <stdio.h>

int main(void)
{
	double	height[] ={160.4, 178.0, 153.5, 183.5, 164.3, 170.0, 192.1, 173.8, 169.0, 190.4, 0};
	double heikin;
	int i;

	for(i=0; i<10; i++){
		height[10] += height[i];
	}
	
	heikin = height[10] / 10.0;
	printf("平均は%fcmです\n", heikin);

	return 0;
}

のように表すことができます。

実行結果

平均は173.500000cmです

行数が変数の時よりも少し増えていますが、もしデータ数が増えてもプログラムの構成はほぼ変わりません。
最初のプログラムに比べると変数名を付ける手間もありません。

上記例では、配列 height に10人分の身長データを代入しています。
さらに10人分の身長の合計値を配列の最後尾に保存しています。(配列の初期化の際、最後尾を0としているのは身長を累計していくためです)

double height[] ={160.4, 178.0, 153.5, 183.5, 164.3, 170.0, 192.1, 173.8, 169.0, 190.4, 0};

人数が増えても for文の処理である height[10] += height[i]; の部分は添え字の10を除いては、プログラムがほとんど変化しません。
これは配列を使うメリットと言えるでしょう。

このように配列を利用すると要素数が変わってもプログラムがほぼ変わらないというメリットを享受することができます。

コメント

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