第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次元配列を返したり、送ったして、
を実現しましょう。
条件は、
プロシージャ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
という形になります。
空白部分を埋めてを実現して下さい。