第7講 多次元配列と1次元配列の関係
第2話 第6講第3話の課題を1次元配列で実現する
を1次元配列
Dim a(11) As Integer '配列aの宣言
によって実現するコード例
Module Module1
Sub Main() '私は社長だ。
'Rnd(-1)
'Randomize(Timer())
f()
End Sub
Sub f()
Dim a(11) As Integer '配列aの宣言
Dim i As Integer
'ランダムデータ生成
For i = 0 To 2
For j = 0 To 3
a(4 * i + j) = Int(Rnd() * 100)
Next
Next
'データ表示
For i = 0 To 2
For j = 0 To 3
If a(4 * i + j) < 10 Then Console.Write(" {0:d} ", a(4 * i + j)) '右端をそろえるための半角スペース
If a(4 * i + j) >= 10 Then Console.Write("{0:d} ", a(4 * i + j))
Next
Console.WriteLine() '改行
Next
End Sub
End Module
解説
今回の課題は2次元配列a(2, 3)と1次元配列a(11)とをいかに対応させるかです。
すなわち、(以下色を対応させています!)
a(0, 0),a(0, 1),a(0, 2),a(0, 3),a(1, 0),a(1, 1),a(1, 2),a(1, 3),a(2, 0),a(2, 1),a(2, 2),a(2, 3)
a(0), a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9), a(10), a(11)
の対応関係をいかにするかです。
|
0 | 1 | 2 | 3 | ||||||
0 | 0 | 1 | 2 | 3 | ||||||
1 | 4 | 5 | 6 | 7 | ||||||
2 | 8 | 9 | 10 | 11 |
(0の色が1次元配列の添え字)
jの0の列に注目すると、0,4,8です。
そのほかの列も
1,5,9
2,6,10
3,7,11
と4ずつ増えています。
これはjが
0,1,2,3,4
と4つの場合をとるからです。
すなわち4飛びにすれば良いので、
4 * i + j
です。
では、第6講第4話の課題
を1次元配列によって、実現して下さい。
ただし、データ生成とデータ表示はすべて1次元For文で行うものとします。