2011-08-06 8 views
3

を印刷します。プログラムは、2次元配列の寸法をテキストボックスを通してユーザに尋ねる。ディメンションが取得されると、プログラムは、与えられたディメンションをフォーム内にきちんと配置した乗算表を出力する必要があります。問題は、配列をきれいに表形式で印刷する方法がわかりません。これはサンプル出力のようなものです:フォーマットと2次元配列(VB6)私は、乗算表プログラムでここに助けが必要

1 2 3 4 5 
2 4 6 8 10 
3 6 9 12 15 
4 8 12 16 20 
5 10 15 20 25 

私の作品です。

Option Explicit 

Dim maxNum As Integer 
Dim multiplicationTable() As Integer 
Dim x As Integer 
Dim y As Integer 

Private Sub cmdDisplay_Click() 

    cmdDisplay.Enabled = False 
    maxNum = Val(txtDimension.Text) 

    ReDim multiplicationTable(maxNum, maxNum) As Integer 

    For y = 1 To maxNum 
     For x = 1 To maxNum 
      multiplicationTable(x, y) = x * y 
     Next x 
    Next y 

End Sub 

このプログラムでは、このプログラムでテーブルをきれいに印刷できますか?

答えて

5

これは、あなたの「きちんと」の例で示したとおりに表を印刷します。各列の幅は、その列の最大桁数に1つのスペース区切り文字を加えたものになります。テーブル全体で一様な列幅(=最大桁数)でより綺麗に見えると思う人もいれば、コードを簡単に修正してこれを行うことができます。

' Convert integer table to string table 
Dim astrTable() As String 
ReDim astrTable(1 To UBound(multiplicationTable, 1), _ 
    1 To UBound(multiplicationTable, 2)) 
Dim intMaxDigitsInColumn As Integer 
Dim intDigitsInThisNumber As Integer 
For y = 1 To maxNum 
    ' Determine width of column (= max number of digits) 
    intMaxDigitsInColumn = 1 
    For x = 1 To maxNum 
     intDigitsInThisNumber = 1 + _ 
      Int(Log(multiplicationTable(x, y))/Log(10#)) 
     If intDigitsInThisNumber > intMaxDigitsInColumn Then 
      intMaxDigitsInColumn = intDigitsInThisNumber 
     End If 
    Next x 

    ' Convert each table element into string of appropriate length 
    For x = 1 To maxNum 
     astrTable(x, y) = Space(intDigitsInThisNumber) 
     Mid(astrTable(x, y), 1) = CStr(multiplicationTable(x, y)) 
    Next x 
Next y 

' Print the table with a space delimiter between columns 
Dim strTable As String 
strTable = "" 
For x = 1 To maxNum 
    For y = 1 To maxNum 
     strTable = strTable & astrTable(x, y) & " " 
    Next y 
    strTable = strTable & vbCrLf 
Next x 
Debug.Print strTable 
+0

どうもありがとう!^_ ^今、私は問題をどのように攻撃するか考えています。 :) –

関連する問題