配列の基本的な使い方 1(単純な変数との違い)

   それは、番号でアクセス位置を指定できる

次の仕様で比較します。

仕様実行例

1、2、3 の商品番号がつけられる商品がある。

商品番号とその販売個数を、
ENDの入力があるまで繰り返して入力し、
ENDの入力後に、各商品の販売個数合計を表示する。

右実行結果で、が入力。
1行で商品番号とその販売個数の入力をしている。

2 3                         
1 2
3 2
2 1
3 1
1 1
3 2
1 3
END
商品1販売個数 :6
商品2販売個数 :4
商品3販売個数 :5

以下で、単純な変数を使った場合と、配列を使った場合のプログラムの違いを示します。

単純な変数を使ったプログラム配列を使ったプログラム
#include <stdio.h>
main()
{
	int goods1 = 0;/* 商品1の販売個数 */
	int goods2 = 0;/* 商品2の販売個数 */
	int goods3 = 0;/* 商品3の販売個数 */
	
	int id, suu;/* 商品番号と販売個数 入力用 */

	/* 入力の繰り返し */
	while(fscanf(stdin, "%d %d", &id, &suu) == 2){

		if(id == 1){
			goods1 += suu;
		} else if(id == 2){
			goods2 += suu;
		} else if(id == 3){
			goods3 += suu;
		}

	}

	/* 各商品の販売個数合計を表示 */
	fprintf(stdout, "商品1販売個数 :%d\n", goods1);
	fprintf(stdout, "商品2販売個数 :%d\n", goods2);
	fprintf(stdout, "商品3販売個数 :%d\n", goods3);
}
#include <stdio.h>
main()
{
	int goods[4] = {0,0,0,0};/* 商品販売個数 */
	
	
	
	int id, suu;/* 商品番号と販売個数 入力用 */

	/* 入力の繰り返し */
	while(fscanf(stdin, "%d %d", &id, &suu) == 2){

		goods[id] += suu;







	}

	/* 各商品の販売個数合計を表示 */
	for(id = 1; id < 4; id++){
		fprintf(stdout, "商品%d販売個数 :%d\n", id, goods[id]);
	}
}

商品番号によって加算対象の変数を、ifで場合分けしています。
商品の種類が増えた場合、それに伴い変数、else ifの分岐、商品販売個数表示が、 それぞれ増えることになります。

商品番号を添え字に使って、その要素に加算してます。
ifの分岐が無くて、その代わりが1行で済んでいます。
しかも商品の種類が増えた場合、 配列の要素数に関連する部分を変更するだけで済みます。

右の配列を使う方法では、『商品番号を配列の添え字にして使うと決めて』、その番号でアクセスしています。