前のページへ   このページの先頭へ   次のページへ


12.配列


配列(array)
複雑なプログラムや、繰り返し計算を行っていくような場合、多量の変数が要求されることがあります。C言語では、実行前にすべての変数の宣言を必要としていますので今までの手法では、仮に100の変数が必要となる時、100の変数宣言を行わねばなりません。それはとても非現実的なことで、作業のロードやミスの誘発という観点からもほめられたものではありません。そこで、複数の変数を管理する際に、変数をまとめて作る配列という考え方が必要になってきます。ここでは、同種のデータをまとめて扱うやり方を学びます。

1次元配列
データを一列に並べて、管理する場合1次元的配列という手法を用います。

配列を行う際には、4行目のint price[5]のように 変数のタイプ(型) 変数名[変数の個数] といった形式で指定を行います。このように、規則性があるものを統一形式で書くことが出来ないかを探すことが大事になってきます。

サンプル12−1
#include <stdio.h>
int main()
{
コピペは普通に打てるようになってからしましょう
/*変数の設定*/
int price[5],number ;
/*値段の初期設定*/
price[0]=98 ; price[1]=120 ; price[2]=198 ; price[3]=200 ; price[4]=250 ;
/*priceが、0から始まっていることに注意*/
do
{
printf("値段を確認する棚番号を入れてください") ;
printf("[1-5以外入力まで継続]\n") ;
scanf("%d",&number) ;
if ((number >= 1)&&(number<=5))
{
printf("%d番目の棚は、%d円です。\n",number,price[number-1]) ;
}
}while ((number >= 1)&&(number<=5)) ;
printf("1-5以外が入力されました。プログラムを終了します。\n");
return(0) ;
}

2次元配列
いろんな計算をしていく中で表形式で、データを扱うということはよく行われています。次のような入力を行い、2次元の表を作ることを考えて見ましょう。

サンプル12−2
#include <stdio.h>
int main()

{
int tenpo[3][4] ;
int total[3] ;
int loop1,loop2 ;

for(loop1 = 0; loop1 < 4; loop1++)
{
for(loop2 = 0; loop2 < 3; loop2++)
{
switch(loop2)
{
case 0:printf("店舗1");break ;
case 1:printf("店舗2");break ;
case 2:printf("店舗3");break ;
}
printf("の%d期の売上を入力してください\n",loop1+1) ;
scanf("%d",&tenpo[loop2][loop1]) ;
}
}
for(loop2 = 0;loop2 < 3;loop2++)
{
total[loop2] = 0;
for(loop1 = 0;loop1 < 4;loop1++)
{
total[loop2]=total[loop2]+tenpo[loop2][loop1] ;
}
}
for(loop2 = 0;loop2 < 3;loop2++)
{
for(loop1 = 0;loop1 < 4;loop1++)
{
printf("%8d",tenpo[loop2][loop1]) ;
}
printf("%8d|\n",total[loop2]) ;
}
return(0);
}

プログラム中のint tenpo[3][4]のように4つのデータを持つ配列を、それぞれ3つの配列に振り分ける、つまり、3行4列の行列を作ることが出来ます。これを2次元配列と呼んでいます。


課題 手入力にはしないで自動的に1から20までをカウントして(カウント順に工夫が必要かもしれない)、4行5列の次のような表を作るプログラムを考えなさい。ただし、罫線はいらない。

1

5

9

13

17

2

6

10

14

18

3

7

11

15

19

4

8

12

16

20


前のページへ   このページの先頭へ   次のページへ


プログラミングホーム