跪求指正一个VB错误

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:53:17
Dim p(2, 2) As Single
Dim q(2) As Single
Dim s(2) As Single
Dim s1(2) As Single
Dim N, M As Integer
N = 2
M = 2
c = 1
result = 0
ni = 0
For i = 1 To N
For j = 1 To M
p(i, j) = InputBox("请输入数据")
Print p(i, j)
Next j
Next i
sum = 0
For j = 1 To M
For i = 1 To N
sum = sum + p(i, j)
Next i
Next j
If sum > 1 Then
Print "输入信道矩阵不正确,请重新输入信道矩阵!"
c = 1
i = N
End If
c = 0
For i = 1 To N 'a请输入迭代计算精度:'
q(i) = 1 / N
Next i
For i = 1 To N
Next i
s(i) = q(i)
For j = 1 To M
s(j) = 0
For i = 1 To N
s(j) = s(j) + s(i) * p(i, j)
Next i
Next j
For j = 1 To M
For i = 1 To N
p(i, j) = s(i) * p(i, j) / s(j)
Next i
Next j
End Sub

每次都是下标越界,急用求教高手,救命了,

错误包好在'//////////////////////////////之间
Dim p(2, 2) As Single
Dim q(2) As Single
Dim s(2) As Single
Dim s1(2) As Single
Dim N, M As Integer
N = 2
M = 2
c = 1
result = 0
ni = 0
For i = 1 To N
For j = 1 To M
p(i, j) = InputBox("请输入数据")
Print p(i, j)
Next j
Next i
sum = 0
For j = 1 To M
For i = 1 To N
sum = sum + p(i, j)
Next i
Next j
If sum > 1 Then
Print "输入信道矩阵不正确,请重新输入信道矩阵!"
c = 1
i = N
End If
c = 0
For i = 1 To N 'a请输入迭代计算精度:'
q(i) = 1 / N
Next i

'////////////////////////////////////////////////////////////////
'为何这里是个空循环?当这个空循环完成之后i=3了,所以,在执行s(i) = q(i) 时下标肯定越界!从程序功能来看,s(i) = q(i)视乎应该放在循环之内。
'所以以下三行正确代码为
'For i = 1 To N
' s(i) = q(i)
'Next i

For i = 1 To N
Next i
s(i) = q(i) <