Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 请帮助我使用这个简单、基本的伪代码_Loops_For Loop_Selection_If Statement - Fatal编程技术网

Loops 请帮助我使用这个简单、基本的伪代码

Loops 请帮助我使用这个简单、基本的伪代码,loops,for-loop,selection,if-statement,Loops,For Loop,Selection,If Statement,这对你们来说应该很容易,但我还是无法在脑海中想象出来。以下是我想做的: if (flag) for (i = 0; i < 10; i++) {LARGE_BLOCK_OF_CODE (that visits an array in order)} else for (i = 9; i >= 0; i--) {LARGE_BLOCK_OF_CODE (that visits an array in REVERSE order)} if

这对你们来说应该很容易,但我还是无法在脑海中想象出来。以下是我想做的:

if (flag)
    for (i = 0; i < 10; i++)
        {LARGE_BLOCK_OF_CODE (that visits an array in order)}
else
    for (i = 9; i >= 0; i--)
        {LARGE_BLOCK_OF_CODE (that visits an array in REVERSE order)}
if(标志)
对于(i=0;i<10;i++)
{按顺序访问数组的\u代码的大\u块\u}
其他的
对于(i=9;i>=0;i--)
{u代码的大块(按相反顺序访问数组)}

问题是这段代码不能放在函数中,我不想复制/粘贴它两次。我有没有办法这样做:

if (flag)
    loop = for (i = 0; i < 10; i++);
else
    loop = for (i = 9; i >= 0; i--);

loop
{LARGE_BLOCK_OF_CODE (that visits an array in the order specified in 'loop')}
if(标志)
loop=for(i=0;i<10;i++);
其他的
循环=for(i=9;i>=0;i--);
环
{u代码的大块(按“循环”中指定的顺序访问数组)}

??将大的代码块放入函数中,接收命令作为参数。然后在您需要的任意数量的循环中重用它。

将大量的代码块放入函数中,接收顺序作为参数。然后在需要的任意数量的循环中重复使用它。

为循环的开始和结束创建变量,并创建第三个变量以确定迭代的“方向”

然后让循环运行一段代码。像这样

int iStart = 0;
int iEnd = 9;
int iIncrement = +1;

if (reverse)
{
    iStart = 9;
    iEnd = 0;
    iIncrement = -1;
}

for (i = iStart; i != iEnd; i += iIncrement)
{
    //...large block of code here...
}

为循环的开始和结束创建变量,并创建第三个变量来确定迭代的“方向”

然后让循环运行一段代码。像这样

int iStart = 0;
int iEnd = 9;
int iIncrement = +1;

if (reverse)
{
    iStart = 9;
    iEnd = 0;
    iIncrement = -1;
}

for (i = iStart; i != iEnd; i += iIncrement)
{
    //...large block of code here...
}

我不知道你的阵型有多大。也许可以生成一个额外的数组,该数组按所需顺序保存所需索引:

indexes = []

for (i = 0; i < 10; i++)
  indexes.add(i)

if (!flag)
  indexes.reverse()

for each (i in indexes)
  {LARGE_BLOCK_OF_CODE}
索引=[]
对于(i=0;i<10;i++)
索引.添加(i)
如果(!标志)
index.reverse()
对于每个(索引中的i)
{u代码的大块}

我不知道您的阵列有多大。也许可以生成一个额外的数组,该数组按所需顺序保存所需索引:

indexes = []

for (i = 0; i < 10; i++)
  indexes.add(i)

if (!flag)
  indexes.reverse()

for each (i in indexes)
  {LARGE_BLOCK_OF_CODE}
索引=[]
对于(i=0;i<10;i++)
索引.添加(i)
如果(!标志)
index.reverse()
对于每个(索引中的i)
{u代码的大块}
嗯,我知道…:p如果不是这样的话,那就太多了

是的,FlipScript的解决方案更好,尽管看起来可能不整洁

嗯,我知道…:p如果不是这样的话,那就太多了



是的,FlipScript的解决方案更好,尽管看起来可能不整洁问题是,如果C或C++可以放置在函数中,那么这个代码块就不能放在函数< /代码>中。唯一的问题是将它放入一个函数需要做多少工作。另一种选择是:将一大块代码放在宏中。这是我一开始想做的,但我最初并没有写那段代码,所以我不想弄乱它,除非在他们指定的范围内。更不用说我大部分都不明白了…>\uu>@UsRels8600 + 1用于解释约束。<代码>问题是,如果C或C++可以放置在函数中,则该代码块不能放置在函数< /代码>中。唯一的问题是将它放入一个函数需要做多少工作。另一种选择是:将一大块代码放在宏中。这是我一开始想做的,但我最初并没有写那段代码,所以我不想弄乱它,除非在他们指定的范围内。更不用说我大部分都不明白了…>\uu>@user486800+1用于解释约束。这是flag=true^时的结果。您必须使用
=不是
=
,而是用
10
替换
9
,我喜欢这个紧凑的版本,但FlipScript精巧的版本解释得更好。谢谢。我也喜欢这个。。。但是,一到两年后,当我不得不重新审视代码并且不记得它是如何工作的时候,它可能会让我头疼。我讨厌学习我自己的代码!这是flag=true^^时的结果。您必须使用
=不是
=
,而是用
10
替换
9
,我喜欢这个紧凑的版本,但FlipScript精巧的版本解释得更好。谢谢。我也喜欢这个。。。但是,一到两年后,当我不得不重新审视代码并且不记得它是如何工作的时候,它可能会让我头疼。我讨厌学习我自己的代码!我喜欢。FlipScript的答案对我来说似乎有点简单,但如果另一个方案对我不起作用,这是一个不错的备份方案。谢谢你的洞察力!对。我的第一种方法也和FlipScript类似。但他比我快了2分钟,所以我改成了这个。正如您在他的解决方案中所看到的,要获得正确的结束条件值有点困难。(我想两者都有差距。)但最终它更高效、更直观。另一方面,我的帖子中的解决方案已经为一些非常时髦的循环做好了准备。您甚至可以洗牌索引数组,从而以随机顺序进行迭代。也许只要有人想做,我就会链接到这篇文章。我喜欢。FlipScript的答案对我来说似乎有点简单,但如果另一个方案对我不起作用,这是一个不错的备份方案。谢谢你的洞察力!对。我的第一种方法也和FlipScript类似。但他比我快了2分钟,所以我改成了这个。正如您在他的解决方案中所看到的,要获得正确的结束条件值有点困难。(我想两者都有差距。)但最终它更高效、更直观。另一方面,我的帖子中的解决方案已经为一些非常时髦的循环做好了准备。您甚至可以洗牌索引数组,从而以随机顺序进行迭代。也许只要有人想这样做,我就会链接到这篇文章。我的荣幸,“user486800”。)我的荣幸,“user486800:)此代码块不能放在函数“为什么不?”中此代码块不能放在函数“为什么不?”?