第5講 配列の学習

第3話 2次元配列
まず、簡単なForm1を作り、2次元データを出力させてみましょう。
q
実行をダブルクリックして、次のように出力されるプログラミングをされてください。
もちろん配列の学習ですから、
int a[10][10];
と宣言しそれを利用してください。
a
label1に表示させるために
Dim w as String
を用意してください。
wはw = w + a(i, j).ToString() + " "
のように使えましたね。
1行目を01等としているのは、半角スペースを入れても
s
とずれてしまいます。半角スペースと半角英数の大きさが微妙に違うためです。
仮に全角スペースにしても
dでうまくいきません。
うまく揃えられればそれでいいのですが、
いろいろ試行錯誤してもよい方法がないので、
f
で妥協しているわけです。
01などとするにはw = w + "0" + a(i, j).ToString() + " " 等とすればよいのです。
第4講で学んだIf...Else...文などを利用して、1桁の場合と2桁の場合に分けて、
表示できるようにされてください。
尚、改行はw = w & vbNewLine でできます。
2次元配列と2次元ループ(2次元For文)を利用されて、プログラミングされてください。
解答例は30行下。






















プログラミング例
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, j As Integer, a(9, 9) As Integer, w As String

     '2次元データの発生
     For i = 0 To 9
       For j = 0 To 9
         a(i, j) = 10 * i + j
       Next
     Next

     '2次元データの表示
     w = ""
     For i = 0 To 9
       For j = 0 To 9
         If a(i, j) < 10 Then
           w = w + "0" + a(i, j).ToString() + " "
         Else
           w = w + a(i, j).ToString() + " "
         End If
       Next
       w = w & vbNewLine
    Next
    Label1.Text = w

   End Sub
End Class


では次の課題です。プログラミングを少し変更して、表示結果が
gとなるようにするにはどうしたらよいでしょうか。
プログラミング例は30行下。

























プログラミング例
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, j As Integer, a(9, 9) As Integer, w As String

     '2次元データの発生
     For i = 0 To 9
       For j = 0 To 9
         
a(i, j) = 10 * j + i
       Next
     Next

     '2次元データの表示
     w = ""
     For i = 0 To 9
       For j = 0 To 9
         If a(i, j) < 10 Then
           w = w + "0" + a(i, j).ToString() + " "
         Else
           w = w + a(i, j).ToString() + " "
         End If
       Next
       w = w & vbNewLine
    Next
    Label1.Text = w

   End Sub
End Class
変更はa(i, j) = 10 * j + iの1カ所だけです。
hの関係を転置といいますが、
iとjを反対にするだけで転置が可能です。
a(j, i) = 10 * i + j でも同じです。
さて、また課題です。表示結果が、
となるようプログラミングされてください。
プログラミング例は30行下。


























プログラミング例
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, j As Integer, a(9, 9) As Integer, w As String

     '2次元データの発生
     For i = 0 To 9
       For j = 0 To 9
         a(i, j) = (i + j) mod 10
       Next
     Next

     '2次元データの表示
     w = ""
     For i = 0 To 9
       For j = 0 To 9
         w = w + a(i, j).ToString() + " "
       Next
       w = w & vbNewLine
    Next
    Label1.Text = w

   End Sub
End Class
ではこの話最後から2番の課題です。
2桁以下のランダムデータを発生させて、
のように表示させてください。
解答例は例によって30行下。
























解答例
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     '変数の宣言
     Dim i As Integer, j As Integer, a(9, 9) As Integer, w As String

     '2次元データの発生
     For i = 0 To 9
       For j = 0 To 9
         
a(i, j) = Int(100 * Rnd())
       Next
     Next

     '2次元データの表示
     w = ""
     For i = 0 To 9
       For j = 0 To 9
         If a(i, j) < 10 Then
           w = w + "0" + a(i, j).ToString() + " "
         Else
           w = w + a(i, j).ToString() + " "
         End If
       Next
       w = w & vbNewLine
    Next
    Label1.Text = w

   End Sub
End Class

ではこの最後の話題です。
Labelをあと6つ用意して、

となるようにプログラミングされてください。データは2つともランダムデータです。
解答例は次話で。



第2話へ 第4話へ

006

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

数学研究室に戻る