螺旋矩阵vb课设作业,大神指点!! 5
展开全部
Sub fillit(ByVal ns, nt, n, fx)
Dim ff(4, 2) '填充数据的4种方向
Dim a()
ReDim a(n + 1, n + 1)
ff(1, 1) = 1: ff(1, 2) = 0 '下
ff(2, 1) = 0: ff(2, 2) = 1 '右
ff(3, 1) = -1: ff(3, 2) = 0 '上
ff(4, 1) = 0: ff(4, 2) = -1 '左
x = 1: y = 1
If fx = 1 Then z = 1 Else z = 2 '如果是逆时针,从方向1开始,如果是顺时针从方向2开始
total = 0
Do
a(x, y) = ns
xx = x + ff(z, 1)
yy = y + ff(z, 2)
If xx < 1 Or xx > n Or yy < 1 Or yy > n Or a(xx, yy) <> 0 Then
'判断下一个填充的数的位置是否越界,或已经有填充的数了
'如果以上条件成立,换下一个填充方向
z = z + fx
If z > 4 Then z = 1
If z < 1 Then z = 4
xx = x + ff(z, 1)
yy = y + ff(z, 2)
End If
x = xx: y = yy: ns = ns + nt
total = total + 1
Loop While total < n * n '填充完n*n个数才结束
stri = ""
For i = 1 To n
For j = 1 To n
stri = stri & Right(" " & a(i, j), 4)
Next j
stri = stri & vbCrLf
Next i
Text1.Text = stri
End Sub
Private Sub Command1_Click()
ns = Val(Text2.Text) '开始
nt = Val(Text3.Text) '步长
n = Val(Text4.Text) '维数大小
'Check1复选框用于确定填充方向 逆/顺时间方向
If Check1.Value Then fx = 1 Else fx = -1 '逆/顺时针方向填充
fillit ns, nt, n, fx
'fillit 1, 1, 5, -1 '题例中的矩阵1
'fillit 26, 1, 5, 1 '题例中的矩阵2 矩阵2中的填充要求不是很清楚,请自行参照修改
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询