| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:求助,定义数组,怎么老是出现下标越界,怎么改啊?
只看楼主 加入收藏
wxplum
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-14
收藏
 问题点数:0 回复次数:1 
求助,定义数组,怎么老是出现下标越界,怎么改啊?

我在做一个求两曲线的交点时出现下标越界,不知哪位仁兄能给我指点迷津啊,万分感激!!主要是数组定义出现的问题。

Private Sub Command1_Click()
form1.Hide
form2.Show
Dim t As Single, K As Single, Gm As Single, W As Single, a As Single, Th As Single, TAUh As Single, THETAh As Single, THETA1, THETA11, THETA13 As Single, THETA2, THETA21, THETA23 As Single, TTHETA1, TTHETA11, TTHETA13 As Single, TTHETA2, TTHETA21, TTHETA23 As Single, BETAf, BETAf1, BETAf3 As Single, TAU0(8) As Single, i As Single
Dim Xpart2, Xpart11, Xpart12, Xpart13, Xint, yint, x1, x2, y1, y2, x3, y3, x4, y4, b, b1, e, e1, x11(1000), x31(1000), y11(1000), y31(1000), x111(1000), y111(1000), x311(1000), y311(1000) As Double
Dim Tstep, Tstep1, Tstep3, k11, k31, k111 As Integer
i = 0
Const PI = 3.14159265
'form2.Line (2500, 4000)-(9500, 4000)
'form2.Line (6000, 700)-(6000, 7500)
a = Val(Combo1.ListIndex)
Z = Val(Text1.Text) '凸轮转速n'
C = Val(Text2.Text) '凸轮轴和转盘中心距c'
d = Val(Text3.Text) '动静比d'
R = Val(Text4.Text) '滚子半径r'
Lf = Val(Text5.Text) '从动滚子中心回转半径'
N = Val(Text6.Text) '分度数n'
M = Val(Text7.Text) '从动滚子数'
K = Lf / C
If K < 0.2 Or K > 0.65 Then
MsgBox "非法数据!请重新输入!", 48, "提示信息"
Else
If Combo1.Text = "请选择曲线类型" Then
MsgBox "请选择从动件曲线!", 48 + vbOKOnly, "错误"
ElseIf Val(Text2.Text) < 0 Then MsgBox "主从转动轴距离不可小于0!", 48 + vbOKOnly, "错误"
ElseIf Val(Text1.Text) < 0 Then MsgBox "凸轮转速不可为负!", 48 + vbOKOnly, "错误"
ElseIf Val(Text4.Text) < 6 Or Val(Text4.Text) > 36 Then MsgBox "滚子直径不合适,请重新选择!", 48 + vbOKOnly, "错误"
ElseIf Val(Text6.Text) <= 0 Or Val(Text6.Text) - Fix(Val(Text6.Text)) <> 0 Or Val(Text6.Text) > 12 Then MsgBox "分度数必须为正数,且一般小于12!", 48 + vbOKOnly, "错误"
ElseIf Val(Text3.Text) < 0 Then MsgBox "动静比必须大于0!", 48 + vbOKOnly, "错误"
ElseIf Val(Text5.Text) < 0 Then MsgBox "从动盘半径不可为负,请重新选择!", 48 + vbOKOnly, "错误"
ElseIf Val(Text5.Text) > Val(Text2.Text) Then MsgBox "从动盘半径不可大于主从转动轴距离,请重新选择!", 48 + vbOKOnly, "错误"
Else
End If
Gm = M / N '凸轮头数'
W = 2 * PI * Z / 60 '凸轮角速度'
Th = 2 * PI * d / (W * (1 + d)) '完成一个分度需要的时间'
TAUh = 2 * PI / N '从动轮分度角'
Do While i <= M
TAU0(i) = TAUh * (1.5 - i) / Gm
i = i + 1
Loop


THETAh = 2 * PI * d / (1 + d) '动程角'
THETA2 = k11 * THETAh / 1000 '运动关系运动参数'
TTHETA2 = THETAh / TAUh
THETA11 = TAUh * S(a, k11 / 1000) + (TAU0(1))
TTHETA1 = (TAUh / Th) * V(a, k11 / 1000)
BETAf = Atn((C * (TTHETA2) * Sin(THETA11)) / (Lf * ((TTHETA2) - (TTHETA1)) - C * (TTHETA2) * Cos(THETA1)))
x11(k11) = (Lf * Cos((THETA11) - (THETA2)) + R * Cos((BETAf) + (THETA11) - (THETA2)) - C * Cos(THETA2)) * (20) + 6000
y11(k11) = (Lf * Sin((THETA11) - (THETA2)) + R * Sin((BETAf) + (THETA11) - (THETA2)) + C * Sin(THETA2)) * (20) + 4000


THETAh = 2 * PI * d / (1 + d) '动程角'
THETA2 = k31 * THETAh / 1000 '运动关系运动参数'
TTHETA2 = THETAh / TAUh
THETA13 = TAUh * S(a, k31 / 1000) + (TAU0(3))
BETAf = Atn((C * (TTHETA2) * Sin(THETA13)) / (Lf * ((TTHETA2) - (TTHETA1)) - C * (TTHETA2) * Cos(THETA1)))
x31(k31) = (Lf * Cos((THETA13) - (THETA2)) + R * Cos((BETAf) + (THETA13) - (THETA2)) - C * Cos(THETA2)) * (20) + 6000
y31(k31) = (Lf * Sin((THETA13) - (THETA2)) + R * Sin((BETAf) + (THETA13) - (THETA2)) + C * Sin(THETA2)) * (20) + 4000

Tstep = 1000
For k11 = 2 To Tstep + 1
For k31 = 2 To Tstep + 1
If x11(k11 - 1) >= x31(k31 - 1) And x11(k11) >= x31(k31 - 1) And y11(k11 - 1) >= y31(k31 - 1) And y11(k11) <= y31(k31) Then
Tstep1 = k11
Tstep3 = k31
End If
Next
Next


Xpart2 = (y11(Tstep1) - y11(Tstep1 - 1)) * (x31(Tstep3) - x31(Tstep3 - 1)) - (y31(Tstep3) - y31(Tstep3 - 1)) * (x11(Tstep1) - x11(Tstep1 - 1))
Xpart11 = (y31(Tstep3) - y31(Tstep3 - 1)) * (x11(Tstep1) - x11(Tstep1 - 1)) * (x31(Tstep3) - x31(Tstep3 - 1))
Xpart12 = -x31(Tstep3) * (y31(Tstep3) - y31(Tstep3 - 1)) * (x11(Tstep1) - x11(Tstep1 - 1))
Xpart13 = x11(Tstep1) * (y11(Tstep1) - y11(Tstep1 - 1)) * (x31(Tstep3) - x31(Tstep3 - 1))
Xint = (Xpart11 + Xpart12 + Xpart13) / Xpart2
yint = y31(Tstep3) + (y31(Tstep3) - y31(Tstep3 - 1)) * (Xint - x31(Tstep3)) / (x31(Tstep3) - x31(Tstep3 - 1))
For k111 = 1 To Tstep1 - 1
x111(k111) = x11(k111)
y111(k111) = y11(k111)
form2.PSet (x111(k111), y111(k111)), RGB(0, 0, 200)

Next
For k311 = 1 To Tstep + 1 - Tstep3
x311(k311) = x31(Tstep3 + k311)
y311(k311) = y31(Tstep3 + k311)
form2.PSet (x311(k311), y311(k311)), RGB(0, 0, 200)

Next

搜索更多相关主题的帖子: 定义 越界 
2006-05-14 13:47
wxplum
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-14
收藏
得分:0 

有谁帮我解答一下啊,先谢谢了。
调试了好几天了,就是没结果,真的有些着急了。
或能否推荐一点资料供参考啊。有关数组方面的知识。
谢谢了

2006-05-14 13:50
快速回复:求助,定义数组,怎么老是出现下标越界,怎么改啊?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025565 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved