螺旋矩阵vb课设作业,大神指点!! 5

 我来答
mr_shj
2015-06-23 · TA获得超过2682个赞
知道大有可为答主
回答量:1665
采纳率:94%
帮助的人:1391万
展开全部
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
sbj518
2015-06-23 · TA获得超过4.4万个赞
知道大有可为答主
回答量:1.1万
采纳率:81%
帮助的人:5331万
展开全部

先做个例子,你看行不行?要做的话是有偿的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式