12.配列
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 |