配列
データa0,a1,・・・,anをa[0],a[1],・・・,a[n]と表現すると便利である。
そのような a=(a[0],a[1],・・・,a[n])
を「1次元配列」ARRAYという。
データB00,b01,・・・,bmnに対して、
b=(b[0,0],・・・,b[0,n]
・・・ b[m,0],・・・,b[m,n])
を「2次元配列」という。
一般に「k次元」の配列が定められる。
配列の宣言
文法:配列と配列の要素
配列:変数名に準ずる。
配列要素:配列名(添字0,添字1,・・・,添字n)
の形の文字列、但し添字0〜nは整数又は整数型変数。
例)
int a[10];
意味:a[0],a[1],・・・,a[9]は整数型である
配列上の演算
文法:配列の要素に対して次の演算が定められている。
1)代入a(i)={0}
2)四則
例1)配列の利用
データ 入力:a[0],・・・,a[99]
出力:sum=a[0]+・・・+a[99]
アルゴリズム
プログラム
#include<stdio.h>
main() { int i,sum; int a[100]; sum=0; for(i=0;i<100;i++){ scanf("%d",&a[i]); sum=sum+a[i]; } printf("%d",sum); }
例2)ベクトルの加算
データ 入力 a[0],b[0]
・ ・ ・ a[9],b[9]
出力 c=a+bベクトル
アルゴリズム
プログラム
#include<stdio.h>
main() { int i; int a[10]={0}; int b[10]={0}; int c[10]={0}; for(i=0;i<10;i++) {scanf("%d",&a[i]); scanf("%d",&b[i]); }for(i=0;i<10;i++) c[i]=a[i]+b[i]; for(i=0;i<10;i++) printf("%d\n",c[i]); }
例3)ベクトルの積
データ 入力
a[1],b[1]
・ ・ ・ a[10],b[10] 出力 c=a*bベクトル
アルゴリズム
10.2.2 多次元配列
先ほどは1次元配列でしたが、今度は多次元配列(ここでは例として2次元配列)について説明していきます。
例)int a[2][4]={{6,10,5,50},{0,1,6,8}};
これは、2次元配列といって、図に示すと次のように書けます。
箱の中は、データです。
これは次のようなことを示している。
a[0][0]=6,a[0][1]=10,a[0][2]=5,a[0][3]=50
a[1][0]=0,b[1][1]=1 ,b[1][2]=6,b[1][3]=8
例 2行3列の行列を加算する
#include<stdio.h>
main()
{
int i,j;
int ma[2][3]={{1,2,3},{4,5,6}};
int mb[2][3]={{6,3,4},{5,1,2}};
int mc[2][3]={0};
for (i=0;i<2;i++){
for (j=0;j<3;j++)
mc[i][j]= ma[i][j]+ mb[i][j];
}for (i=0;i<2;i++){
for (j=0;j<3;j++)
printf("%d",mc[i][j]);
printf("\n");
}
}