注册 登录
编程论坛 VB6论坛

有关DO While循环的

z18234089392 发布于 2015-06-02 09:49, 1559 次点击
Do
        Z(I) = (b + A1) / 2
        Debug.Print "Z(I) = "; Z(I)
       Call AERA(I)
       Debug.Print "W(I) = "; W(I)
        Debug.Print "X(I) = "; X(I)
       Call SHUIWEI(I)
       Debug.Print "FX = "; FX
        FXC = FX
    If FXC = 0 Then
       GoTo shuchu
       Else
         If FXB * FXC > 0 Then
           b = Z(I)
           FXB = FXC
         Else
            A1 = Z(I)
         End If
         If W(I) < 0.05 Then
                     GG(I) = GG(I) + 0.2
                     GoTo BiaoJi
         End If
     End If
   Loop Until Abs(b - A1) < 0.01
shuchu:       Open App.Path & "\out.txt" For Append As #2
              Print #2, Z(I); W(I); V(I)
              Close #2
个人觉得这个循环没有什么问题,可为什么还不满足Abs(b - A1) < 0.01,就直接进行下面的语句了。。。就没有循环,我拿手算应该循环的。。这肯定不对嘛。哪里有问题请赐教。谢谢了
12 回复
#2
lianyicq2015-06-02 10:08
do
...
loop until 条件
如果条件满足就执行后续语句。

do
...
loop while 条件
如果条件满足就重复执行
#3
z182340893922015-06-02 10:10
回复 2楼 lianyicq
可为什么还不满足Abs(b - A1) < 0.01,就直接进行下面的语句了,我先自己计算了一下,然后让计算机算,发现结果不一样。
#4
wp2319572015-06-02 10:12
不喜欢 do开头的循环
#5
lianyicq2015-06-02 10:13
回复 3楼 z18234089392
循环中有goto shuchu
#6
z182340893922015-06-02 10:14
回复 2楼 lianyicq
而且我在 Loop Until Abs(b - A1) < 0.01后 Debug.Print "Abs(b - A1)  = "; Abs(b - A1) 也不显示结果
#7
z182340893922015-06-02 10:15
回复 5楼 lianyicq
If FXC = 0 Then
       GoTo shuchu
显示我的FXC也不等于0啊,为什么会GOTO
#8
wp2319572015-06-02 10:22
你想实现啥啊  

加那么多debug语句  把程序弄的乱乱的
#9
lianyicq2015-06-02 10:22
回复 7楼 z18234089392
你怎么知道执行这句了?
shuchu:       Open App.Path & "\out.txt" For Append As #2
再补充一句,用动态二维数组保存地形点,有问题。可能你没发现,因为样本中只有两个截面,而且第二个比第一个地形点多。如果后续的截面地形点少于前面截面的,数据会丢失.
最开始没考虑用结构体,只能用固定的二维数组了。

[ 本帖最后由 lianyicq 于 2015-6-2 10:28 编辑 ]
#10
z182340893922015-06-02 10:48
回复 9楼 lianyicq
因为我的Debug窗体下面显示的结果都是只有一次的,没有循环,所以就显示计算结果了
#11
z182340893922015-06-02 11:32
回复 8楼 wp231957
我是在调试,所以想看看中间计算的结果,我想问的是我的代码应该没有什么问题,可是为什么不循环呢
#12
lianyicq2015-06-02 12:06
  Dim SAdd As Boolean
  I = 0 '断面
  Open App.Path & "\jilu.txt" For Input As #1

...
        Case Is = 4
          'SAdd = Not (SAdd)
          'If SAdd = False Then I = I + 1
          I = I + 1
          L(I) = Val(temp(1))
...

再把二维数组定义为固定的
1