当前位置:编程学习 > VB >>

高手来帮我看下这段代码错在哪?

一个解分段函数的程序,运行说是
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 ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,