- UID
- 198155
- 积分
- 831
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-11-30
- 最后登录
- 1970-1-1
|
发表于 2005-9-28 21:43:49
|
显示全部楼层
应1楼主要求,现传上在用的程序的2个过程。希望能见到你最后的结果。
你编好了,我会感到欣慰。
Private Sub qljdj()''求临界档距
''临界档距计算,四个控制条件:1低温;2年均;3复冰;4大风
Dim j As Byte
On Error GoTo err
k(1) = g1 / Xu
k(2) = g1 / (fz * Xu * kk)
k(3) = g7 / Xu
k(4) = g6 / Xu
g(1) = g1: a(1) = Xu: t(1) = td
g(2) = g1: a(2) = fz * Xu * kk: t(2) = tp
g(3) = g7: a(3) = Xu: t(3) = tb
g(4) = g6: a(4) = Xu: t(4) = tf
For j = 1 To 4
p = 0
For i = 1 To 4
aa = k(i)
paixu ''排序
Next i
c(j) = k(Y) '第 j=1 次找到的最大值以 c(1) 替换,y即i
k(Y) = 0 '摘去大值,再找次大值
d(j) = Y '第 j=1 次找到的大值是哪个气象类(如:1--低温)
Next j
q = d(4): W = d(3): e = d(2): r = d(1) 'q气象类:c(4);w类:c(3);e类:c(2);r类:c(1) 递增序
'求出6个临界档距:
l(e, r) = ((24 / tm * (a(r) - a(e)) + 24 * xp * (t(r) - t(e))) / ((g(r) * g(r)) / (a(r) * a(r)) - (g(e) * g(e)) / (a(e) * a(e))))
l(W, r) = ((24 / tm * (a(r) - a(W)) + 24 * xp * (t(r) - t(W))) / ((g(r) * g(r)) / (a(r) * a(r)) - (g(W) * g(W)) / (a(W) * a(W))))
l(q, r) = ((24 / tm * (a(r) - a(q)) + 24 * xp * (t(r) - t(q))) / ((g(r) * g(r)) / (a(r) * a(r)) - (g(q) * g(q)) / (a(q) * a(q))))
l(W, e) = ((24 / tm * (a(e) - a(W)) + 24 * xp * (t(e) - t(W))) / ((g(e) * g(e)) / (a(e) * a(e)) - (g(W) * g(W)) / (a(W) * a(W))))
l(q, e) = ((24 / tm * (a(e) - a(q)) + 24 * xp * (t(e) - t(q))) / ((g(e) * g(e)) / (a(e) * a(e)) - (g(q) * g(q)) / (a(q) * a(q))))
l(q, W) = ((24 / tm * (a(W) - a(q)) + 24 * xp * (t(W) - t(q))) / ((g(W) * g(W)) / (a(W) * a(W)) - (g(q) * g(q)) / (a(q) * a(q))))
k(1) = 0: k(2) = 0: k(3) = 0: k(4) = 0: k(5) = 0: k(6) = 0
''以下系东电试研院补充教材判法
If l(e, r) > 0 Then
k(1) = Sqr(l(e, r))
If l(W, e) > 0 And l(W, e) < l(e, r) Then
k(4) = Sqr(l(W, e))
If l(q, W) > 0 And l(q, W) < l(W, e) Then k(6) = Sqr(l(q, W))
If l(q, W) > 0 And l(q, W) > l(W, e) Then
k(4) = 0
If l(q, e) > 0 And l(q, e) < l(e, r) Then k(5) = Sqr(l(q, e))
If l(q, e) > 0 And l(q, e) > l(e, r) Then k(1) = 0
If l(q, r) > 0 Then k(3) = Sqr(l(q, r))
End If
End If
If l(W, e) > 0 And l(W, e) > l(e, r) Then
k(1) = 0
If l(W, r) > 0 Then
k(2) = Sqr(l(W, r))
If l(q, W) > 0 And l(q, W) < l(W, r) Then k(6) = Sqr(l(q, W))
If l(q, W) > 0 And l(q, W) > l(W, r) Then
k(2) = 0
If l(q, r) > 0 Then k(3) = Sqr(l(q, r))
End If
End If
End If
If l(W, e) <= 0 Then
If l(q, e) > 0 And l(q, e) < l(e, r) Then k(5) = Sqr(l(q, e))
If l(q, e) > 0 And l(q, e) > l(e, r) Then k(1) = 0
If l(q, r) > 0 Then k(3) = Sqr(l(q, r))
End If
End If
If l(e, r) <= 0 Then
If l(W, r) > 0 Then
k(2) = Sqr(l(W, r))
If l(q, W) > 0 And l(q, W) < l(W, r) Then k(6) = Sqr(l(q, W))
If l(q, W) > 0 And l(q, W) > l(W, r) Then
k(2) = 0
If l(q, r) > 0 Then k(3) = Sqr(l(q, r))
End If
End If
If l(W, r) <= 0 And l(q, r) > 0 Then k(3) = Sqr(l(q, r))
End If
For j = 1 To 6
p = 0: Y = 0
For i = 1 To 6
aa = k(i)
paixu '排序
Next i
c(j) = k(Y) '第 j=1 次找到的最大值以 c(1) 替换,y即i
k(Y) = 0 '摘去大值,再找次大值
d(j) = Y '第 j=1 次找到的大值是哪个气象类(如:1--低温)
Next j
' d(6): d(5): d(4): d(3): d(2): d(1)
' c(6) c(5) c(4) c(3) c(2) c(1) 临界档距递增序
If c(3) = 0 And c(2) = 0 Then
lj = c(1)
lei = d(1)
xxdd ''子程序
End If
If c(3) = 0 And c(1) = 0 Then
lj = c(2)
lei = d(2)
xxdd
End If
If c(2) = 0 And c(1) = 0 Then
lj = c(3)
lei = d(3)
xxdd
End If
If c(3) = 0 And c(2) <> 0 And c(1) <> 0 Then
lei = d(2)
xxdd
xj1 = xx: sj1 = dd
lei = d(1)
xxdd
xj2 = xx: sj2 = dd
If sj1 = xj2 Then
lj1 = c(2)
lj2 = c(1)
End If
End If
If c(2) = 0 And c(1) <> 0 And c(3) <> 0 Then
lei = d(3): xxdd
xj1 = xx: sj1 = dd
lei = d(1): xxdd
xj2 = xx: sj2 = dd
If sj1 = xj2 Then
lj1 = c(3)
lj2 = c(1)
End If
End If
If c(1) = 0 And c(3) <> 0 And c(2) <> 0 Then
lei = d(3): xxdd
xj1 = xx: sj1 = dd
lei = d(2): xxdd
xj2 = xx: sj2 = dd
If sj1 = xj2 Then
lj1 = c(3)
lj2 = c(2)
End If
End If
If c(1) <> 0 And c(3) <> 0 And c(2) <> 0 Then
lei = d(3): xxdd
xj1 = xx: sj1 = dd
lei = d(2): xxdd
xj2 = xx: sj2 = dd
lei = d(1): xxdd
xj3 = xx: sj3 = dd
If sj1 = xj2 And sj2 = xj3 Then
lj1 = c(3)
lj2 = c(2)
lj3 = c(1)
End If
End If
Exit Sub
err:
MsgBox ("求临界档距时出错。应审查“防振措施”、“最大代表档距估计值”等。程序将退出。")
End
End Sub
Private Sub xxdd()
Select Case lei
Case 1
xx = e: dd = r
Case 2
xx = W: dd = r
Case 3
xx = q: dd = r
Case 4
xx = W: dd = e
Case 5
xx = q: dd = e
Case 6
xx = q: dd = W
End Select
End Sub |
|