第14講 高次元配列と低次元配列の関係

第5話 4次元配列を1次元配列で表現する

解答コード例
Private Sub CommandButton1_Click()

  Dim a(2, 3, 4, 5) As Integer
  Dim b(360) As Integer
  Dim i As Integer, j As Integer, k As Integer, l As Integer

  For i = 0 To 2
    For j = 0 To 3
      For k = 0 To 4
        For l = 0 To 5
          a(i, j, k, l) = Int(Rnd * 100)
        Next
      Next
    Next
  Next
  For i = 0 To 2
    For j = 0 To 3
      For k = 0 To 4
        For l = 0 To 5
          Cells(5 + 6 * i + k, 1 + 7 * j + l) = a(i, j, k, l)
        Next
      Next
    Next
  Next

  For i = 0 To 2
    For j = 0 To 3
      For k = 0 To 4
        For l = 0 To 5
          b(120 * i + 30 * j + 6 * k + l) = a(i, j, k, l)
        Next
      Next
    Next
  Next
  Dim m As Integer
  For m = 0 To 359
    i = Int(m / 120)
    j = Int(m / 30) Mod 4
    k = Int(m / 6) Mod 5
    l = m Mod 6
    Cells(25 + 6 * i + k, 1 + 7 * j + l) = b(120 * i + 30 * j + 6 * k + l)
  Next

End Sub


実行シート

入門
初心者

解説
          Cells(5 + 6 * i + k, 1 + 7 * j + l) = a(i, j, k, l)
の部分は、頭が混乱します。
4次元データを無理に2次元で表しているので、難しいのです。
基礎
初歩VBはじめての入門

    i = Int(m / 120)
    j = Int(m / 30) Mod 4
    k = Int(m / 6) Mod 5
    l = m Mod 6
についてはご自分でトレースして下さい。

最後に逆の課題を出しましょう。
Private Sub CommandButton1_Click()

  Dim a(2, 3, 4, 5) As Integer
  Dim b(360) As Integer
  Dim i As Integer

  For i = 0 To 359
   b(120 * i + 30 * j + 6 * k + l) = i + 1
  Next

End Sub
1次元配列のデータをまずシートに表示させ、
次にそれを4次元配列に翻訳してから、
2行下に4次元配列によるデータを表示してください。
表示形式は、今回と同じにします。



第4話へ 第6話へ

004
  


VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual aasic入門基礎講座へ

数学研究室に戻る