注册 登录
编程论坛 VB6论坛

请教条件不符返回上一级循环代码

fdxxhjc 发布于 2015-05-15 08:46, 1017 次点击
a=0
for i=1 to 100
for j=1 to 200
a=i*i+j*j-301*ij
if a>=0
    '当a=i*i+j*j-301*ij计算的结果<0时,循环返回到j再增加1,直至符合条件a>0才在立即窗口中显示并继续循环,请问在这行(或这行的注释符前面)要加个怎样的代码,谢谢(我加了个loop电脑提示出错)

else
endif
debug.print "a=";a
next j
next i
10 回复
#2
lianyicq2015-05-15 09:14
for i=1 to 100
  for j=1 to 200
    a=i*i+j*j-301*i*j
    if a>0 then debug.print "a=" & a
  next
next

现在问题是在i,j的取值范围内没有能满足a>0的
#3
fdxxhjc2015-05-15 09:26
先生不好意思,等式是a=i*i+j*j-301*j
#4
lianyicq2015-05-15 09:38
回复 3楼 fdxxhjc
那就直接把a的表达式修改了就行了
#5
fdxxhjc2015-05-15 09:47
以下是引用fdxxhjc在2015-5-15 08:46:55的发言:

a=0
for i=1 to 100
for j=1 to 200
a=i*i+j*j-301*ij
if a>=0
    '当a=i*i+j*j-301*ij计算的结果<0时,循环返回到j再增加1,直至符合条件a>0才在立即窗口中显示并继续循环,请问在这行(或这行的注释符前面)要加个怎样的代码,谢谢(我加了个loop电脑提示出错)

else
endif
debug.print "a=";a
next j
next i
啊,对不起,我的第五行代码应该是:if a<0,其他与原问题一样,请教在注释行前应添加怎样的代码,谢谢
#6
wmf20142015-05-15 09:51
a=0
for i=1 to 100
for j=1 to 200
a=i*i+j*j-301*ij
if a>=0 then debug.print "a=";a  '这不就结了
next j
next i
#7
lianyicq2015-05-15 09:54

for i=1 to 100
  for j=1 to 200
    a=i*i+j*j-301*i
    if a<0 then debug.print "a=" & a
  next
next
不管a是否小于0,都要执行next j ,否则代码就无法执行.区别只是在于a<0时,要打印.
#8
fdxxhjc2015-05-15 10:31
a=0
for i=1 to 1000
for j=1 to 2000
a=8888888*i*j-i*i-j*j
if a>0
    '当a=i*i+j*j-301*ij计算的结果<0时,循环返回到j再增加1,直至符合条件a>0才在立即窗口中显示并继续循环,请问在这行(或这行的注释符前面)要加个怎样的代码,谢谢(我加了个loop电脑提示出错)
    '假如这里有很多很复杂的关于i、j的计算关系式
    '在这里有个“if a>0”条件的话,可以少很多计算量,或在这里要将计算的结果写入DBF文件时,若没有这个“if a>0”限止条件,全部写入到DBF文件会使该文件空间很大,所以这里想设置这个“不符合条件返回循环”的代码,谢谢
else
endif
  '打开DBF表
     'FF1rs1.AddNew
     ,将计算结果写入DBF表
  'FF1rs1.Update
next j
next i
#9
风吹过b2015-05-15 10:39
楼上的不是回答了吗?

a=0
for i=1 to 1000
for j=1 to 2000
a=8888888*i*j-i*i-j*j
if a>0
   '继续其他运算
   '打开DBF表
     'FF1rs1.AddNew
     ,将计算结果写入DBF表
  'FF1rs1.Update
else
  '这里不动作
endif
next j
next i
#10
fdxxhjc2015-05-15 10:54
以下是引用风吹过b在2015-5-15 10:39:43的发言:

楼上的不是回答了吗?
 
a=0
for i=1 to 1000
for j=1 to 2000
a=8888888*i*j-i*i-j*j
if a>0
   '继续其他运算
   '打开DBF表
     'FF1rs1.AddNew
     ,将计算结果写入DBF表
  'FF1rs1.Update
else
  '这里不动作
endif
next j
next i
哦,我的要求是想当a>0时不执行中间的计算更不写入到DBF,立即返回到下一个j(甚至返回到下一个i),直到a<=0时才进行计算并写入到DBF,如何添加代码来实现,谢谢先生
#11
lianyicq2015-05-15 10:58
想来想去可能是if语句不熟练
if 表达式 then
   代码段1
   else
   代码段2
end if
表达式成立,则执行代码段1,不满足则执行代码段2.如果没有代码段2,只有表达式成立执行代码段1

if 表达式 then
   代码段1
end if

对于每一个i,j值都要进行条件是否成立的判断,用不上提前退出循环的exit for
1