怎么每次调试都说下标越界呢?着急!!再次感谢!!
我的1文件是这样的:
3 4 5 6 2 4 6 8 1 8
2 3 4 5 6 6 7 2 8 9
1 3 4 5 6 7 8 6 1 9
1 2 5 6 3 9 4 3 4 5
2 3 4 5 6 7 3 2 1 4
1 3 2 5 4 6 8 7 6 3
3 4 5 6 3 1 2 3 4 6
2 6 8 8 5 6 7 8 4 3
1 3 4 5 6 7 8 5 4 3
Private Sub laplace_Click()
Dim m, n, t As Integer
Dim s As Single
Dim filename As String
Dim i, j As Integer
m = InputBox("请输入m=")
n = InputBox("请输入n=")
t = InputBox("请输入T=")
ReDim a(m, n)
ReDim b(m, n)
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
If filename = "" Then Exit Sub
Form3.Caption = filename
Form3.Show
Open filename For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
Next j
Next i
Close #1
For i = 1 To m
For j = 1 To n
If i = 1 And j = 1 Then
s = a(1, 2) + a(2, 1) + a(1, n) + a(m, 1) - 4 * a(i, j)
ElseIf i = 1 And j = n Then
s = a(1, n - 1) + a(1, 1) + a(2, n) + a(m, n) - 4 * a(i, j)
ElseIf i = m And j = 1 Then
s = a(m - 1, j) + a(m, 2) + a(1, 1) + a(m, n) - 4 * a(i, j)
ElseIf i = m And j = n Then
s = a(m, n - 1) + a(m - 1, n) + a(m, 1) + a(1, n) - 4 * a(i, j)
ElseIf i > 1 And i < m And j = 1 Then
s = a(i - 1, j) + a(i + 1, j) + a(i, j + 1) + a(i, n) - 4 * a(i, j)
ElseIf i = 1 And j > 1 And j < n Then
s = a(i, j - 1) + a(i, j + 1) + a(m, j) + a(i + 1, j) - 4 * a(i, j)
ElseIf i > 1 And i < m And j = n Then
s = a(i - 1, n) + a(i + 1, n) + a(i, n - 1) + a(i, 1) - 4 * a(i, j)
ElseIf i = m And j > 1 And j < n Then
s = a(i, j - 1) + a(i, j + 1) + a(1, j) + a(i - 1, j) - 4 * a(i, j)
Else
s = a(i - 1, j) + a(i + 1, j) + a(i, j + 1) + a(i, j - 1) - 4 * a(i, j)
End If
If s > t Then
b(i, j) = 1
Else: b(i, j) = 0
End If
Form3.Print b(i, j);
Next j
Form3.Print
Next iEnd SubPrivate Sub omatrax_Click()
Dim m, n As Integer
Dim filename As String
Dim i, j As Integer
Dim currentx, currenty As Single
m = InputBox("请输入m=")
n = InputBox("请输入n=")
ReDim a(m, n)
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
If filename = "" Then Exit Sub
Form3.Caption = filename
Form3.Show
Open filename For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
Form3.Print a(i, j);
Form3.Print Space(2);
Next j
Form3.Print
Form3.Print
Next i
Close #1
End Sub
我的1文件是这样的:
3 4 5 6 2 4 6 8 1 8
2 3 4 5 6 6 7 2 8 9
1 3 4 5 6 7 8 6 1 9
1 2 5 6 3 9 4 3 4 5
2 3 4 5 6 7 3 2 1 4
1 3 2 5 4 6 8 7 6 3
3 4 5 6 3 1 2 3 4 6
2 6 8 8 5 6 7 8 4 3
1 3 4 5 6 7 8 5 4 3
Private Sub laplace_Click()
Dim m, n, t As Integer
Dim s As Single
Dim filename As String
Dim i, j As Integer
m = InputBox("请输入m=")
n = InputBox("请输入n=")
t = InputBox("请输入T=")
ReDim a(m, n)
ReDim b(m, n)
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
If filename = "" Then Exit Sub
Form3.Caption = filename
Form3.Show
Open filename For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
Next j
Next i
Close #1
For i = 1 To m
For j = 1 To n
If i = 1 And j = 1 Then
s = a(1, 2) + a(2, 1) + a(1, n) + a(m, 1) - 4 * a(i, j)
ElseIf i = 1 And j = n Then
s = a(1, n - 1) + a(1, 1) + a(2, n) + a(m, n) - 4 * a(i, j)
ElseIf i = m And j = 1 Then
s = a(m - 1, j) + a(m, 2) + a(1, 1) + a(m, n) - 4 * a(i, j)
ElseIf i = m And j = n Then
s = a(m, n - 1) + a(m - 1, n) + a(m, 1) + a(1, n) - 4 * a(i, j)
ElseIf i > 1 And i < m And j = 1 Then
s = a(i - 1, j) + a(i + 1, j) + a(i, j + 1) + a(i, n) - 4 * a(i, j)
ElseIf i = 1 And j > 1 And j < n Then
s = a(i, j - 1) + a(i, j + 1) + a(m, j) + a(i + 1, j) - 4 * a(i, j)
ElseIf i > 1 And i < m And j = n Then
s = a(i - 1, n) + a(i + 1, n) + a(i, n - 1) + a(i, 1) - 4 * a(i, j)
ElseIf i = m And j > 1 And j < n Then
s = a(i, j - 1) + a(i, j + 1) + a(1, j) + a(i - 1, j) - 4 * a(i, j)
Else
s = a(i - 1, j) + a(i + 1, j) + a(i, j + 1) + a(i, j - 1) - 4 * a(i, j)
End If
If s > t Then
b(i, j) = 1
Else: b(i, j) = 0
End If
Form3.Print b(i, j);
Next j
Form3.Print
Next iEnd SubPrivate Sub omatrax_Click()
Dim m, n As Integer
Dim filename As String
Dim i, j As Integer
Dim currentx, currenty As Single
m = InputBox("请输入m=")
n = InputBox("请输入n=")
ReDim a(m, n)
CommonDialog1.ShowOpen
filename = CommonDialog1.filename
If filename = "" Then Exit Sub
Form3.Caption = filename
Form3.Show
Open filename For Input As #1
For i = 1 To m
For j = 1 To n
Input #1, a(i, j)
Form3.Print a(i, j);
Form3.Print Space(2);
Next j
Form3.Print
Form3.Print
Next i
Close #1
End Sub
for i =1 to m
for j = 1 to n
---
next j
next i
都应该改为
for i =0 to m-1
for j = 0 to n-1
-----
next j
next i
ElseIf i > 1 And i < m And j = 1 Then
s = a(i - 1, j) + a(i + 1, j) + a(i, j + 1) + a(i, n) - 4 * a(i, j)
比如这个i必须小于m,那么为什么i+1还会越界呢?
关于数组基数问题,考虑到了,但是我认为它不会影响吧!
'preserve保存