情報科学演習
2011.07.04
Back to index page
- 本日の作業内容
- 宿題の結果について
値の入れ換えということが理解できて無い人が多く見られました.2つの変数の
値の入れ換えという作業を4/25の実習で行ったのですが,その配列要素版です.
実習課題を確実に解けるようになっていない人が多いので,期末試験では大きな
問題が出てきそうです.
以下に分かっていない例をいくつか示します.
tmp=9;
for(i=0; i<=7; i++){
tmp = tmp - 1;
array[i] = tmp;
}
|
for(i=0; i<=7; i++){
for(tmp=i; tmp<=i; tmp++)
array[i]=9-array[tmp];
}
|
for(i=0;i<=7;i++){
tmp = 8-i;
array[i] = tmp;
}
|
上記の例はただ単に8から1までの数字を表示するように新たに代入しているだけで配列の値を入れ換え
ていません.そのため,10点満点で1点と評価しています.ただしい解答であれ
ば,配列の要素がどんな数であっても順番を入れ換えて表示します.自分の解答がちゃん
と値を入れ換えているかどうかは例えば以下の配列に変更して実行してみることで分か
りますので,分からなかった人は試してみてください.
ary[8] = {11, 22, 33, 44, 55, 66, 77, 88};
|
後,相変わらずインデントの不備も結構見られますので,注意してください.以
下は一部の例です.
main()
{
int i, array[8]={1, 2, 3, 4, 5, 6, 7, 8}, tmp;
printf("My student number: s104010\n\n");
for(i=0; i<=3; i++){
tmp=array[i];
array[i]=array[7-i];
array[7-i]=tmp;
}
for(i=0; i<=7; i++)
printf("%2d" , array[i]);
printf("\n\n-------------------------------\n");
return(0);
}
|
for(i=0;i<=3;i++){
tmp=array[i];
array[i]=array[7-i];
array[7-i]=tmp;
}
for(i=0; i<=7; i++)
printf("%2d", array[i]);
|
- 前回の復習
配列を扱いました.配列は添字(インデックス)を使って中の値を参照するもので
すが,その添字は記号を利用した数式でも構いません.そのため,for
文などと組み合わせて,たくさんの値を一度に代入したり,計算した
りすることが可能です.これが配列の便利なところなので,今後も反復処
理と組み合わせて利用する実習課題を行っています.
- 2次元配列
教科書p.54の図5.3にあるように2次元の配列を用意すると,マトリックス状にデー
タを格納できます.これを利用して,表計算のようなことも出来ます.例えば,
次のような配列があるとします.
ary[3][3] = {{11, 12, 13}, {21, 22, 23}, {31, 32, 33}}
|
要素は例えば,ary[0][1] は12ですし,ary[2][0] は31です.
このとき,ふたつ目のインデックス(添字)が1に関する和を取ると,12+22+32の
足し算となります.これがデータを行と列に並べた場合の列に関する和となりま
す.
11 | 12 | 13 | | |
21 | 22 | 23 | 一つ目の添字が1のものはこの行 | ary[1][j] |
31 | 32 | 33 | | |
| 2つ目の添字が1のものはこの列 | | | |
| ary[i][1] | | | |
|
- 実習