| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3240 人关注过本帖
标题:求助:VB 程序调试出现堆栈空间溢出
取消只看楼主 加入收藏
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求助:VB 程序调试出现堆栈空间溢出
Private Sub Form_Load()
Dim Gam As Double, Gam1 As Double, Gam2 As Double, Gam4 As Double, Vin As Double
Dim X0 As Double, X2 As Double, R As Double, FN As Double, FOFX As Double, Z As Double
Gam = InputBox("请输入绝热指数", "输入绝热指数")
Vin = InputBox("请输入入口普朗特-迈耶角", "输入入口普朗特-迈耶角")
X2 = InputBox("请输入半径取值上限", "输入半径取值上限")
Const Conver = 0.0174532945
Const PI = 3.14159265
Const Increment = 0.1
Gam1 = (Gam + 1#) / 2#
Gam2 = (Gam - 1#) / 2#
Gam4 = Sqr((Gam + 1#) / (Gam - 1#))
X0 = Sqr((Gam - 1#) / (Gam + 1#))
Vin = Vin * Conver
FN = 1#
FOFX = F(Vin, FN)
Call Root(X0, X2, FOFX, FOFRS(Z), R)

End Sub
'//////启动程序设计//////
'//////启动程序设计//////
'//////启动程序设计//////
'//////启动程序设计//////


'//////求解R*的函数//////
'//////求解R*的函数//////
'//////求解R*的函数//////
'//////求解R*的函数//////


'定义函数Root,求解半径值R*
Public Function Root(X0 As Double, X2 As Double, FOFX As Double, FOUNC, X1)
Dim X As Double
Dim XX0 As Double
Dim XX2 As Double
Dim F0 As Double
Dim F2 As Double
Dim FX As Double
XX0 = X0
XX2 = X2
Call FOUNC(XX0)
F0 = FOUNC(XX0)
'Print "FO="; FO; ""
Call FOUNC(XX2)
F2 = FOUNC(XX2)
'Print "F2="; F2; ""
Do
     X = (XX0 + XX2) / 2#
     FX = FOUNC(X)
  If FOFX > FX Then
          XX2 = X
          F2 = FX
       Else
          XX0 = X
          FO = FX
    End If
  Loop Until Abs(XX0 - XX2) < 0.0000000001
     X1 = X
  ' Print "   输出半径X1= "; X1; ""
     Root = X1
End Function

'///定义FOFRS(X)函数,求函数F(R*)的值(方程(10b)),其中X即为所求半径
Public Function FOFRS(X As Double)
Dim Arg1 As Double
Dim Arg2 As Double
    Arg1 = 2# * Gam2 / (X * X) - Gam
    Arg2 = 2# * Gam1 * X * X - Gam
'If -1 <= Arg1 And Arg1 <= 1 And -1 <= Arg2 And Arg2 <= 1 Then
    FOFRS = Gam4 * Asin(Arg1) + Asin(Arg2)
'End If
End Function

'////定义反正弦函数
Public Function Asin(X As Double)
       Asin = Atn(X / Sqr(1# - X * X))
End Function

Public Function F(X As Double, Y As Double)
F(X, Y) = 2# * X - (PI / 2#) * (Gam4 - 1#) - 2# * (Y - 1#) * Increment
End Function

标红部分现实:堆栈空间溢出;
求高手指导,不甚感激!




[ 本帖最后由 huangzhenyu 于 2013-3-23 10:06 编辑 ]
搜索更多相关主题的帖子: 指数 迈耶 
2013-03-23 10:05
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
收藏
得分:0 
回复 2楼 wp231957
这是定义的一个函数,你说没见过这样写,是指啥?
2013-03-23 10:14
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
收藏
得分:0 
回复 2楼 wp231957
我刚才改为  :F = 2# * X - (PI / 2#) * (Gam4 - 1#) - 2# * (Y - 1#) * Increment
解决了这个问题
2013-03-23 10:19
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
收藏
得分:0 
回复 2楼 wp231957
还得麻烦你一下,我这里将函数Root的某一形参定义为了另一个函数FOUNC,如程序中所示,这样定义可以吗?因为定义时没有给出Founc的形参,但实际上它是有的。结果调试时又出现了错误,不知道原因是不是因为此。谢谢!
2013-03-23 10:37
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
收藏
得分:0 
回复 7楼 风吹过b
Public Function Root(X0 As Double, X2 As Double, FOFX As Double, FOUNC, X1)

这里FOUNC为单自变量函数,也即是函数Root的一个形参,那以上的这种定义是不是不可以,如何定义呢?即定义了函数Root(给出其所有形参),又定义了函数FOUNC(给出其形参)
2013-03-23 11:09
huangzhenyu
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-3-23
收藏
得分:0 
回复 10楼 风吹过b
非常感谢!
2013-03-26 14:29
快速回复:求助:VB 程序调试出现堆栈空间溢出
数据加载中...
 
   



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

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