第7講 多次元配列と1次元配列の関係
第8話 3次元配列と1次元配列の関係
例えば、
    Dim a(2, 3, 1) As Integer
と3次元配列を宣言すると、
メモリ上ではデータは次のように並びます。
a(0,0,0),a(0,0,1),a(0,1,0),a(0,1,1),a(0,2,0),a(0,2,1),a(0,3,0),a(0,3,1),
a(1,0,0),a(1,0,1),a(1,1,0),a(1,1,1),a(1,2,0),a(1,2,1),a(1,3,0),a(1,3,1),
a(2,0,0),a(2,0,1),a(2,1,0),a(2,1,1),a(2,2,0),a(2,2,1),a(2,3,0),a(2,3,1)
(実際上は直線です。表示しきれないので3行になっていますが。)
これを参考にして、次のコード
Module Module1

  Sub Main() '私は社長だ。
    'Rnd(-1)
    'Randomize(Timer())
    f()
  End Sub

  Sub f()
    Dim a(2, 3, 1) As Integer '配列aの宣言
    Dim i, j, k As Integer
    'ランダムデータ生成
    For i = 0 To 2
      For j = 0 To 3
        For k = 0 To 1
          a(i, j, k) = Int(10 * Rnd())
        Next
      Next
    Next
    'データ表示
    For i = 0 To 2
      For j = 0 To 3
        For k = 0 To 1
          Console.Write("{0:d} ", a(i, j, k))
        Next
        Console.WriteLine() '改行
      Next
      Console.WriteLine() '改行
    Next
  End Sub

End Module
001
を1次元配列を使ったコードに書き直して下さい。
解答例は30行下。






















解答例
Module Module1

  Sub Main() '私は社長だ。
    'Rnd(-1)
    'Randomize(Timer())
    f()
  End Sub

  Sub f()
    Dim a(23) As Integer '配列aの宣言
    Dim i, j, k As Integer
    'ランダムデータ生成
    For i = 0 To 2
      For j = 0 To 3
        For k = 0 To 1
          a(8 * i + 2 * j + k) = Int(10 * Rnd())
        Next
      Next
    Next
    'データ表示
    For i = 0 To 2
      For j = 0 To 3
        For k = 0 To 1
          Console.Write("{0:d} ", a(8 * i + 2 * j + k))
        Next
        Console.WriteLine() '改行
      Next
      Console.WriteLine() '改行
    Next
  End Sub

End Module
では、第9話の課題です。
データ作成もデータ表示も1次元For文で行って下さい。


第7話へ   第9話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ