求n 阶方阵主复对角线元素之积

问题描述:

求n 阶方阵主复对角线元素之积

错误的原因在于累加计算时,引用矩阵元素下标计算不当:
a(i, x + 1 - i)
注意你的第二维下标,他会超出定义的!
每条线的元素多少不一。所以要精心设计。建议,尽量使用可以“望文生义”的变量名称,方便理解和调试。
Option Base 1
Dim a() As Integer, 和() As Integer
Dim i As Integer, j As Integer, n As Integer
Private Sub Command1_Click()
n = InputBox("请输入N的值", "N阶方阵")
ReDim a(n, n)
Picture1.Print "N阶方阵为:"
For i = 1 To n
For j = 1 To n
a(i, j) = Int(9 * Rnd) + 1
Picture1.Print a(i, j);
Next j
Picture1.Print
Next i
End Sub
Private Sub Command2_Click()
Dim 上三角线次 As Integer, 下三角线次 As Integer
Dim 个数 As Integer, 行次 As Integer, 列次 As Integer
ReDim 和(2 * n - 1)
For 上三角线次 = 1 To n
'上三角部分,含最长的副对角线,从左上起算
For 个数 = 1 To n '从上向下排
列次 = 上三角线次 + 1 - 个数
If 列次 < 1 Then Exit For
行次 = 个数
和(上三角线次) = 和(上三角线次) + a(行次, 列次)
Next 个数
'下三角,不含最长的副对角线
If 上三角线次 <> n Then
下三角线次 = 上三角线次 '从右下角起算
For 个数 = 1 To n '从下向上排
列次 = n - 下三角线次 + 个数
If 列次 > n Then Exit For
行次 = n - 个数 + 1
和(下三角线次) = 和(下三角线次) + a(行次, 列次)
Next 个数
End If
Next 上三角线次
Max = 和(1)
For i = 2 To 2 * n - 1
If 和(i) > Max Then
Max = 和(i)
m = i
End If
Next i
Picture1.Print Max; m
End Sub
Private Sub Form_Load()
Command1.Caption = "产生矩阵"
Command2.Caption = "计算"
End Sub

设n阶方阵:a11,a12,.a1n,a21,a22,.a2n,.,an1ann,主对角线和副对角线上的元素之和:(a11 a22 a33 ...ann)