これは,同じ型のデータを任意の個数宣言し,配列名と自然数 8でアクセスすることができるようにしたもの である.配列を使うためには,
int i[10], j[100][100];のように宣言をする.こうすると,
i[3]=5; /* 配列 i[3] に 5 を代入 */ c=j[25][49]; /* 配列 j[25][49] の値を変数 c へ代入 */
添え字が1つのものを一次元配列と言い,それ以上のものを多次元配列と言う.C言語では 多次元配列を使う場合,
int hoge_1[100], hoge_2[100][100], hoge_3[100][100][100]; double huga[10], huge[10][10], hugo[10][10][10];のように宣言を行う.これらも,配列名と複数の添え字で,そこにあるデータにアクセス する事ができる.3次元以上ももちろん可能である.
数列やベクトル,行列の成分を表す場合,下添え字がつく.その添え字と同じように,配
列の添え字を使う.実に簡単である.ただし,数学の場合,添え字が 1 から始まること
が多いが,C言語の場合,それは 0 から始まるので注意が必要である.配列の宣言の時,
添え字部分に書かれるのは要素数であるので,ベクトルや行列の要素数に 1 を加えた数
で領域を確保しなくてはならない.必要数より大きめに確保するのが普通である.
|
![]() |
![]() |
(2) |
の場合の計算を行うリスト2の各行の内容は以下の通り
である.
1 #include <stdio.h> 2 3 int main(void){ 4 double a[3][3],b[3],c[3]; 5 6 a[1][1] = 1.5; /* 行列にデータを代入 */ 7 a[1][2] = 2.6; 8 a[2][1] = -6.3; 9 a[2][2] = -0.58; 10 11 b[1] = 28.5; /* ベクトルにデータを代入 */ 12 b[2] = -19.1; 13 14 c[1] = a[1][1]*b[1]+a[1][2]*b[2]; /* 行列とベクトルの乗算 */ 15 c[2] = a[2][1]*b[1]+a[2][2]*b[2]; 16 17 printf("c[1] = %e\n", c[1]); /* 結果表示 */ 18 printf("c[2] = %e\n", c[2]); 19 20 return 0; 21 }
1 #include <stdio.h> 2 3 int main(void) 4 { 5 double a[3][3],b[3],c[3]; // 倍精度実数型の配列の宣言 6 int i,j; // 整数型変数の宣言 7 8 a[1][1] = 1.5; // 行列にデータを代入 9 a[1][2] = 2.6; 10 a[2][1] = -6.3; 11 a[2][2] = -0.58; 12 13 b[1] = 28.5; // ベクトルにデータを代入 14 b[2] = -19.1; 15 16 for(i=1; i<=2; i++){ 17 c[i]=0.0; // 初期化 18 for(j=1; j<=2; j++){ 19 c[i] += a[i][j]*b[j]; // 行列とベクトルの乗算 20 } 21 } 22 23 printf("c[1] = %e\n", c[1]); // 結果表示 24 printf("c[2] = %e\n", c[2]); 25 26 return 0; 27 }
フィボナッチのウサギ 成熟した1つがいのウサギは,1ヶ月後に1つがいのウサギを生むとする.そして,生まれ たウサギは1ヶ月かけて成熟して次の月から毎月1つがいのウサギを生む.全てのウサギ はこの規則に従うとし,死ぬことは無いとする.1つがいのウサギは,1年後には何つが いになるか.2,3年後はどうなっているだろうか?.計算してみると分かるが,恐ろしい ことになっている. |
この数列は単純で,
![]() |
フィボナッチ数列を計算するソースをリスト4にしめす.
各行の内容は以下の通りである.
1 #include <stdio.h> 2 3 int main(void){ 4 int usagi[100]; // 月ごとの兎の数 5 int tuki; // 月を表す.ループ制御変数 6 7 usagi[0]=1; 8 usagi[1]=2; 9 10 for(tuki=2; tuki<37; tuki++){ 11 usagi[tuki] = usagi[tuki-1] + usagi[tuki-2]; 12 } 13 14 printf("after 1 year : %d\n", usagi[12]); 15 printf("after 2 years : %d\n", usagi[24]); 16 printf("after 3 years : %d\n", usagi[36]); 17 18 return 0; 19 }
Bernadelliはある種類のカブトムシについて考察した.その カブトムシは,3年間で成長し,3年目につぎの世代を生んで 死亡する.3年間のうち第一年目で確率 1/2 で生き残り,さ らに第2年目で 1/3 が生き残り,第3年目でそれぞれの雌が6 匹の雌を生む.これに対応する行列は,
![]() |
とかける.ここで,は
年のときの1年目のカブ トムシの数である.
1年目,2年目,3年目の虫がそれぞれ3000匹いた としたときその年以後6年間の虫の分布を求めよ.