高手来帮我看下这段代码错在哪?
一个解分段函数的程序,运行说是If X(n) < 0.4 Then 这里
下标越界
Option Explicit
Private Sub Command1_Click()
Dim R As Single, Xd As Single, Xq As Single
Dim n As Double, X() As Single, Y() As Single
Xd = 0.01: R = 4: Xq = 0.05
ReDim Preserve Y(1)
Y(1) = Xd
n = 0
If X(n) < 0.4 Then
Do
n = n + 1
If n > 10 ^ 5 Then
MsgBox "这样的n值过大,程序将崩溃,请检查常数值"
Exit Do
End If
ReDim Preserve X(n + 1)
ReDim Preserve Y(n + 1)
X(n) = 0.061 * Y(n) / (0.714 - Y(n))
Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
Loop Until X(n) <= Xq
End If
If X(n) >= 0.4 Then
Do
n = n + 1
If n > 10 ^ 5 Then
MsgBox "这样的n值过大,程序将崩溃,请检查常数值"
Exit Do
End If
ReDim Preserve X(n + 1)
ReDim Preserve Y(n + 1)
X(n) = 0.445 * Log((Y(n) - 0.496) / 0.388) + 0.884
Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
Loop Until X(n) <= Xq
End If
Print "n="; n
End Sub --------------------编程问答-------------------- 刚开始,X还没有定义,肯定错误了。 --------------------编程问答-------------------- 那怎么改啊?
这个代码~~~
用两个do while 语句嵌套不知道行不行啊? --------------------编程问答-------------------- ……
Xd = 0.01: R = 4: Xq = 0.05
ReDim X(1 to 1)
ReDim Preserve Y(1 to 1)
X(1) = ??'应该有个初值吧
Y(1) = Xd
…… --------------------编程问答-------------------- X(1)是通过Y(1)代入方程解出的
--------------------编程问答-------------------- 我改了一下,好象运行还是不对
Private Sub Command1_Click()
Dim R As Single, Xd As Single, Xq As Single
Dim n As Double, X() As Single, Y() As Single
Xd = 0.01: R = 4: Xq = 0.003
ReDim Preserve Y(1)
Y(1) = Xd
n = 0
Do
n = n + 1
If n > 10 ^ 5 Then
MsgBox "这样的n值过大,程序将崩溃,请检查常数值"
Exit Do
End If
ReDim Preserve X(n + 1)
ReDim Preserve Y(n + 1)
If X(n) < 0.4 Then
X(n) = 0.061 * Y(n) / (0.714 - Y(n))
Else
X(n) = 0.445 * Log((Y(n) - 0.496) / 0.388) + 0.884
End If
Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
Loop Until X(n) <= Xq
Print "n="; n
End Sub
--------------------编程问答-------------------- 嘿嘿
好象改对了
Private Sub Command1_Click()
Dim R As Single, Xd As Single, Xq As Single
Dim n As Double, X() As Single, Y() As Single
Xd = 0.01: R = 4: Xq = 0.00013
ReDim Preserve Y(1)
Y(1) = Xd
n = 0
Do
n = n + 1
If n > 10 ^ 5 Then
MsgBox "这样的n值过大,程序将崩溃,请检查常数值"
Exit Do
End If
ReDim Preserve X(n + 1)
ReDim Preserve Y(n + 1)
X(n) = 0.061 * Y(n) / (0.714 - Y(n))
Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
If X(n) >= 0.4 Then
X(n) = 0.445 * Log((Y(n) - 0.496) / 0.388) + 0.884
End If
Loop Until X(n) <= Xq
Print "n="; n
End Sub
哈哈
高手来鉴定下啊```
补充:VB , 基础类