欢迎光临|狼窝|!!!

爱伦狼

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  昨天在QQ问问上看见有人要一个根据行列数随机排座位的软件,呵呵,我还没见过此类软件。反正想想应该很简单,就打算给他编一个。用VS2008随便出来了一个,发过去竟然说不能用……我汗……没装.net的原因吧……

  然后既然答应下来了就头痛地打开6年前玩过的VB6……苍天啊大地啊……突然发现VB6是那么的深奥,那么的艰辛,没有数组的排序,数组禁止赋值,定义数组不能带变量定义,类似b=10 : dim a(b) 竟然会出错。但是dim a(10)是正确的。我头痛…… 研究好半天发现b=10 : dim a() : redim a(b)竟然能通过。我无语啊…… 需要重定义吗……或许我学艺不精的缘故。

  然后第一遍算法,出来后10*10没问题,就发过去了。后来发现数字越大,效率明显下降,超过500感觉有死机的假象。丫的改算法,改出来测试发现最后会出现两个0!

     (O(∩_∩)O~)

  主要的意图就是把从1到i*j的自然数乱序。结果应该保存在num数组里。

Dim num(), num1() As Integer
    All 
= i * j         'i,j分别表示行列数
    ReDim num(All), num1(All)
    
Dim x As Integer
    
For a = 0 To All - 1
        num(a) 
= -1
        num1(a) 
= a
    
Next
    
    
For a = 0 To All - 1
        mx 
= All - a
        
Dim tmp(), tmp1() As Integer
        
ReDim tmp(mx), tmp1(mx)
            
Dim count As Integer
            count 
= 0
            
For q = 0 To All - 1
                
If num1(q) >= 0 Then
                    tmp(count) 
= num1(q)
                    tmp1(count) 
= q
                    count 
= count + 1
                
End If
            
Next
        
Randomize Timer
        x 
= Int(Rnd * mx)
        num(a) 
= tmp(x)
        num1(tmp1(x)) 
= -1
    
Next

 

 

如此代码不知道有什么问题,反正最后num数组会经常出现2个0(一个0,一个空值,计算的时候都是按0处理的)……望达人赐教为什么

不得已,找不到原因,加入纠错片段

 

'纠错片段
    cuo = 0
    
For a = 0 To All - 1
        
If num(a) = 0 Then
            
cuo = cuo + 1
            
If cuo > 1 Then
                
For zz = 0 To All - 1
                    
If num1(zz) <> -1 Then
                        num(a) 
= num1(zz)
                        num1(zz) 
= -1
                        
Exit For
                    
End If
                
Next
            
End If
        
End If
    
Next

 

感觉很复杂的说……

反正最后程序的效率应该是明显提高了,不过有个文本框的限制,最多60000多字符吧,结果显示不到3000行就熄火了。貌似也没解决。

不过对方接收到感觉还不错,起码解决他的问题了,呵呵

总觉得代码中的算法应该还能改进,不会改了。

人生的第一个小程序就这样发布了!~~哇卡卡卡O(∩_∩)O~鄙人菜鸟,业余水平,纯属爱好,呵呵

 下载地址:随机座位

补充:以上调试过程都是在winXP中调试的,经常出现2个0的情况,debug.print cuo的结果是1或者2,但是在win7中cuo总是1,反复测试没有2的情况出现。怪哉……XP……7……

posted on 2009-09-19 01:25  爱伦狼  阅读(376)  评论(2编辑  收藏  举报
  征婚:

自我描述:年方三八,有车有房,相貌堂堂,工作稳定,尚未婚配。

条件:人类,女性,未婚。

待遇:应征者:烤香肠一根。征用者:钻戒一枚。应征后试征用期间,花费酌情予以报销。

备注:只要爱情不要房子的女孩有绝对优先权。(90后、非主流、类非主流可以忽略)

(你看见说明你很有缘O(∩_∩)O~)