次の仕様で比較します。
| 仕様 | 実行例 |
|---|---|
|
1、2、3 の商品番号がつけられる商品がある。 |
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で場合分けしています。 |
商品番号を添え字に使って、その要素に加算してます。 |
右の配列を使う方法では、『商品番号を配列の添え字にして使うと決めて』、その番号でアクセスしています。