配列

 

データ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ベクトル
  アルゴリズム

   プログラム
#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]); }

 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,a[1][1]=1 ,a[1][2]=6,a[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");

}

}