尝试循环遍历for循环,除非“i”在排除列表上

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (72)

我正在Karel编写一个程序,它基本上是用于Fanuc机器人的Pascal plus运动命令。我的代码有效,包括用for循环遍历它200次。

现在我想添加一个排除列表,所以在伪代码“”中I = 1到200,除非我在排除列表中“

列表是:“数组排除[5]的整数”我的代码是:

for I=1 to 200 DO
  FOR j =1 TO 5 DO
     IF exclude[j]=i THEN
     GO TO end_it
  ENDFOR
  bunch of code
  endit::
ENDFOR

现在我知道为什么我得到堆栈溢出,我跳出for循环。但是,我无法想出如何解决我的问题的方法。我可以单独检查数组的5个成员,但我试图保持我的代码简短和甜蜜,特别是因为我有第二个(第三个)for循环,我必须再次添加相同的东西。

任何帮助将不胜感激!

提问于
用户回答回答于

如果Karel没有Break跳出FOR循环的语句,那么您可以使用REPEAT .. UNTIL condition循环,如下所示:

for I=1 to 200 DO
  Excluded := False
  j := 0
  REPEAT
    J := J + 1
    IF exclude[j]=i THEN
      Excluded := True
  UNTIL (J = 5) or Excluded

  if not excluded then
  begin

    bunch of code

  end

ENDFOR

这允许您REPEAT UNTILexclude[]阵列中找到匹配时立即退出循环。然后测试Excluded: boolean你知道是否运行的新变量bunch of code

PS。我的代码示例部分使用了Delphi pascal语法,希望你可以解决它。

扫码关注云+社区

领取腾讯云代金券