第8講 プロシージャ(2)
第6話 もとの行列・左右反転行列・上下反転行列・転置行列のすべてを表示する
実行画面
もとの行列
1 7 4 0 9 4 8
8 2 4 5 5 1 7
1 1 5 2 7 6 1
4 2 3 2 2 1 6
8 5 7 6 1 8 9
2 7 9 5 4 3 1

左右反転
8 4 9 0 4 7 1
7 1 5 5 4 2 8
1 6 7 2 5 1 1
6 1 2 2 3 2 4
9 8 1 6 7 5 8
1 3 4 5 9 7 2

上下反転
2 7 9 5 4 3 1
8 5 7 6 1 8 9
4 2 3 2 2 1 6
1 1 5 2 7 6 1
8 2 4 5 5 1 7
1 7 4 0 9 4 8

転置
1 8 1 4 8 2
7 2 1 2 5 7
4 4 5 3 7 9
0 5 2 2 6 5
9 5 7 2 1 4
4 1 6 1 8 3
8 7 1 6 9 1


@ 2次元配列はFuncitonプロシージャf()が作る。
A 2次元の行列データはSubプロシージャg()が生成する。
B 行列の表示はSubプロシージャh()が担当する。
D 左右反転行列の表示はSubプロシージャs()が担当する。
E 上下反転行列の表示はSubプロシージャt()が担当する。
F 転置行列の表示はSubプロシージャu()が担当する。
という条件下で実現するプログラム例

Module Module1

  Sub Main() '私は社長だ。
    Rnd (-1)
    Randomize (Timer())
    Dim a(5, 6) As Integer
    a = f() '配列作成
    g (a) '行列データ作成
    h (a) '行列の表示
    Console.WriteLine()
    s (a) '左右反転行列表示
    Console.WriteLine()
    t (a) '上下反転行列表示
    Console.WriteLine()
    u (a) '上下反転行列表示
  End Sub

  Function f()
    Dim x(5, 6) As Integer
    Return x
  End Function

  Sub g(x(,) As Integer)
    Dim i, j As Integer
    For i = 0 To 5
      For j = 0 To 6
        x(i, j) = Int(10 * Rnd())
      Next
    Next
  End Sub

  Sub h(x(,) As Integer)
    Dim i, j As Integer
    For i = 0 To 5
      For j = 0 To 6
        Console.Write("{0:d} ", x(i, j))
      Next
      Console.WriteLine()
    Next
  End Sub

  Sub s(x(,) As Integer)
    Dim i, j As Integer
    For i = 0 To 5
      For j = 0 To 6
        Console.Write("{0:d} ", x(i, 6 - j))
      Next
      Console.WriteLine()
    Next
  End Sub

  Sub t(x(,) As Integer)
    Dim i, j As Integer
    For i = 0 To 5
      For j = 0 To 6
        Console.Write("{0:d} ", x(5 - i, j))
      Next
      Console.WriteLine()
    Next
  End Sub

  Sub u(x(,) As Integer)
    Dim i, j As Integer
    For i = 0 To 6
      For j = 0 To 5
        Console.Write("{0:d} ", x(j, i))
      Next
      Console.WriteLine()
    Next
  End Sub

End Module



では、次は3次元配列を返したり、送ったして、
037
を実現しましょう。
条件は、
プロシージャf()が3次元配列を作ってその先頭アドレスをMain()に返し、
Main()がそのアドレスをプロシージャg()とh()に送り、
プロシージャg()はデータ入力、プロシージャh()ではデータ出力を担当するものとします。
つまり、
Module Module1

  Sub Main() '私は社長だ。
    Rnd (-1)
    Randomize (Timer())
    Dim a(2, 3, 4) As Integer
    a = f() '配列作成
    g (a) '行列データ作成
    h (a) '行列の表示
  End Sub

  Function f()

  End Function

  Sub g(x(,,) As Integer)

  End Sub

  Sub h(x(,,) As Integer)

  End Sub

End Module
という形になります。
空白部分を埋めて037を実現して下さい。


第5話へ   第7話へ

002

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

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