| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:大侠帮帮忙啊
只看楼主 加入收藏
xukai20074
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-11-4
收藏
 问题点数:0 回复次数:2 
大侠帮帮忙啊
Private Sub Command1_Click()

Dim i As Integer, j As Integer, a() As Double, n As Integer, x() As Double, sum As Double

ReDim Preserve a(1 To n, 1 To n + 1) As Double, x(1 To n) As Double

sum = 0
x(n) = a(n, n + 1) / a(n, n)
For i = (n - 1) To 1 Step -1
    For j = (i + 1) To n Step 1
        sum = sum + a(i, j) * x(j)
    Next j
    x(i) = (a(i, n + 1) - sum) / a(i, i)
Next i
End Sub
a()和x()已经定义成公共变量了
这段程序怎么有问题啊!调试的时候讲是小标超界,这到底是怎么回事啊?
2008-11-04 20:14
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
Private Sub Command1_Click()
Dim i As Integer, j As Integer, a() As Double, n As Integer, x() As Double, sum As Double

ReDim Preserve a(1 To n, 1 To n + 1) As Double, x(1 To n) As Double
重定义数组大小
这时,N没有值,所以=0 这条命令就等价于
ReDim Preserve a(1 To 0, 1 To 0 + 1) As Double, x(1 To 0) As Double
不报错才有鬼呢。
sum = 0

x(n) = a(n, n + 1) / a(n, n)
因为数据没有初始化过,所以全是0,
所以这名,相当于 x(n)=0/0 ,继续报错。

For i = (n - 1) To 1 Step -1
   因为 n=0,所以此循环是 -1 to 1
    For j = (i + 1) To n Step 1
      此循环是 0 t 0
        sum = sum + a(i, j) * x(j)
        此结果是 0+0*0
    Next j
    x(i) = (a(i, n + 1) - sum) / a(i, i)
   最后的结果是 0/0 继续报错。
Next i
End Sub

[[it] 本帖最后由 风吹过b 于 2008-11-4 21:50 编辑 [/it]]

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 21:41
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
如果你定义了公共变量的话,那么在过程里,就不要再重新定义,如果重新定义了,就是模块变量,这时,对此变量的引用,都是引用这个模块变量,不会引用于公共变量去。

授人于鱼,不如授人于渔
早已停用QQ了
2008-11-04 21:52
快速回复:大侠帮帮忙啊
数据加载中...
 
   



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

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