注册 登录
编程论坛 VB6论坛

刚学VB,遇到问题,用VB怎么实现数字的组合呢?我怎么老出错

快乐黑宝 发布于 2011-12-27 11:55, 1017 次点击
我要用VB编一个程序,计算并输出01,02--33,这33个数字中抽出6个从小到大的组合,要求输出所有的组合,我编写了如下的程序,可是输出只有最后一个组,为什么呢?错在哪里,高手指点啊
Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = s
Next
Next
Next
Next
Next
Next
End Sub
9 回复
#2
apple00720112011-12-27 16:41
TEXT1.MultiLine= True
将Text1.Text = s
修改成 Text1.Text = Text1.Text & VBCRLF & s
#3
快乐黑宝2011-12-28 16:33
回复 2楼 apple0072011
我改完了,但是在试运转的时候总是卡住,只能结束退出,怎么回事呢?
修改完如下:Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = Text1.Text & vbCrLf & s
Next
Next
Next
Next
Next
Next
End Sub
#4
hjycom2011-12-28 22:16
你的For...Next循环语句就使用错了
Private Sub Command1_Click()
Dim a As Integer, b As Integer, c As Integer , d As Integer, e As Integer, f As Integer, g As Integer
Dim s As String
For a = 1 To 28
For b = a + 1 To 29
For c = b + 1 To 30
For d = c + 1 To 31
For e = d + 1 To 32
For f = e + 1 To 33
s = a & b & c & d & e & f
Text1.Text = Text1.Text & vbCrLf & s
Next f
Next e
Next d
Next c
Next b
Next a
End Sub
#5
hjycom2011-12-28 22:19
可能是你For 循环使用的太多了
#6
apple00720112011-12-29 16:37
回复 3楼 快乐黑宝
程序没有问题,只是循环太多了,比较慢,耐心一点
Private Sub Command1_Click()
Dim a, b, c, d, e, f, g As Integer
Dim s As String
For a = 1 To 28
    For b = a + 1 To 29
        For c = b + 1 To 30
            For d = c + 1 To 31
                For e = d + 1 To 32
                    For f = e + 1 To 33
                        s = a & b & c & d & e & f
                        Text1.Text = Text1.Text & vbCrLf & s
                    Next
                Next
            Next
        Next
    Next
Next
End Sub

Private Sub Form_Load()

End Sub

Private Sub Text1_Change()
    Text1.SelStart = Len(Text1.Text)
    Text1.SelLength = 0
End Sub
这样就能看到结果了

[ 本帖最后由 apple0072011 于 2011-12-29 16:42 编辑 ]
#7
bczgvip2011-12-29 16:46
比起耐心,咱更推荐改用别的算法。
#8
apple00720112011-12-29 16:54
向bczgvip老师学习,有什么好的算法
#9
bczgvip2011-12-30 14:29
呃,说是算法好像有点不妥吧。应该说效率。
把那固定的数据写道文件中,再添加到资源,之后直接加载,速度不就是上去了?
还有,这个问题楼主不说得更清楚,那么大家认为还有讨论的价值吗?
“不用考虑效率。”那就当我没说吧。只是咱的PC伤不起!
#10
老顽童9892012-07-14 11:31
呵呵,这是双色球的组合,用循环是很慢的,PC伤不起哦。如果是从500里取200的组合,你就没辙哦,我有更快的算法!!
    联系方法:E-mail  01ZZF@  给你发窗体文件
1