齿轮论坛 www.gearbbs.net

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 8661|回复: 17
收起左侧

[软件] vb 挂轮选取

  [复制链接]
发表于 2010-8-14 17:19 | 显示全部楼层 |阅读模式

本帖子中包含更多资源。

您需要 登录 才可以下载或查看,没有账号?注册

x
我刚开始学vb,用它编了个选取差动挂轮的程序,但调试不出来,请教高手帮忙看看,指正
(查表法选取挂轮)



Option Explicit
Private Sub Command1_Click()
Dim i As Double, M As Double, L As Double, E As Double, K As Double, X As Double, n As Double
Dim a As Integer, b As Integer, c As Integer, d As Integer, c1 As Integer, c2 As Integer, c3 As Integer, c4 As Integer, j As Integer
Dim g

X = 6#
g = Array(20, 20, 23, 24, 24, 25, 26, 30, 32, 33, 34, 35, 36, 36, 37, 40, 41, 43, 45, 45, 45, 46, 47, 48, 48, 50, 52, 53, 55, 57, 58, 59, 60, 60, 61, 62, 65, 67, 70, 71, 73, 74, 75, 77, 79, 80, 82, 83, 85, 86, 89, 90, 92, 94, 95, 97, 98, 100)
M = Text1.Text
L = Text2.Text
E = Text3.Text
K = Text4.Text
i = (X * Sin(3.1415926 * b / 180)) / (M * K)
For c1 = 0 To 57
  a = g(c1)
   For c2 = 0 To 57
     b = g(c2)
     For c3 = 0 To 57
      c = g(c3)
      For c4 = 0 To 57
        d = g(c4)
       n = Abs(((a * c) / (b * d)) - i)
       If ((n <= E) And (a + b - c > 15) And (c + d - b > 15) _
          And (a <> b) And (b <> c) And (c <> d) And _
          (a <> c) And (b <> d) And (a <> d)) Then
     MsgBox (CStr(a) & CStr(b) & CStr(c) & CStr(d) & CStr(n))

          End If
           Next c4
           Next c3
        Next c2
        Next c1
        
      
      
End Sub

发表于 2010-8-15 08:21 | 显示全部楼层
新手能编出这样的程序很不错,此程序有几个问题:
1.有一句错了,应为:i = (X * Sin(3.1415926 * L / 180)) / (M * K);
2.MSGBOX()的显示中要适当加入几个空格;
3.不要采用MSGBOX()做为输出方式,到时候输出计算结果时,单单关闭提示窗的动作就可能击碎你的耐性。
 楼主| 发表于 2010-8-15 16:35 | 显示全部楼层
回复 陈飞 的帖子


    恩,谢谢指正!可是该程序在调试过程中不能得到结果!自己也看不出来,
发表于 2010-8-16 19:33 | 显示全部楼层
程序改了还不能用吗?你知道四个文本框中该输入什么数吗?
发表于 2010-8-16 20:34 | 显示全部楼层
这个程序有时候能够得到一些结果,结果很乱,没有计算符号。
这样的程序,在正式的使用中,一般的是不用的,每次只能输出一种结果,选自的条件语句也乱和太多。
为了保存计算结果,最好的方法是使用数组变量来保存,这样就有利于选取数据,也有利于利用文本框来输出相当多的数据,以便于按照精度选取。
如果计算结果使用print等方式,试一下可能要好一些,并且可以连续的输出
将计算结果使用“*”和“/” 和。。。。分开,就一目了然了
发表于 2010-8-18 11:57 | 显示全部楼层
调试输出可以这样MsgBox (CStr(a) &SPACE(5)& CStr(b) & SPACE(5)& CStr(c) &SPACE(5)&  CStr(d) & SPACE(5)& CStr(n))
正式程序最好用print,输出到文件
例如:                List1.AddItem Space(3) + (CStr(a) + Space(9) & CStr(b) + Space(9) & CStr(c) + Space(9) & CStr(d) + Space(9) + CStr(zh(m)) + Space(9) & CStr(n)) & vbCrLf
                Print #1, (CStr(a) + Space(5) & CStr(b) + Space(5) & CStr(c) + Space(5) & CStr(d) + Space(5) + CStr(m) + Space(5) & CStr(n)) & vbCrLf
发表于 2010-8-18 17:14 | 显示全部楼层
按照你的思路可以调试成功,但是穷举法的速度很慢,恳求高手指点一下算法技巧,网上流传的很多挂轮计算器的速度很快,有没有哪个共享一下计算方法或源代码?
发表于 2010-8-22 22:48 | 显示全部楼层
不大会用“list1.........”这个命令,能不能说的清楚点?


发表于 2010-8-23 18:36 | 显示全部楼层
穷举法可以得到很多组挂轮,然后从中精选不重复的输出
发表于 2010-8-24 17:19 | 显示全部楼层
根据你的思路,附上我的代码供参考,但是挂轮优化不会,穷举法太费时间,恳求高手修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|齿轮论坛

GMT+8, 2024-5-6 12:08 , Processed in 0.327473 second(s), 10 queries , MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表