Пожалуйста, помогите мне с этим простым, элементарным псевдокодом - PullRequest
0 голосов
/ 09 декабря 2010

Это должно быть очень легко для вас, ребята, но я все еще не могу представить это себе в уме. Вот что я пытаюсь сделать:

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 (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')}

??

Ответы [ 4 ]

2 голосов
/ 09 декабря 2010

Создайте переменные для начала и конца цикла и создайте третью переменную, чтобы определить «направление» для итерации.

Тогда просто дайте циклу пройти через ваш ОДИН блок кода. Вот так ...

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...
}
1 голос
/ 09 декабря 2010

Я не знаю, насколько велик ваш массив. Возможно, можно создать дополнительный массив, содержащий требуемые индексы в требуемом порядке:

indexes = []

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

if (!flag)
  indexes.reverse()

for each (i in indexes)
  {LARGE_BLOCK_OF_CODE}
1 голос
/ 09 декабря 2010

Поместите этот LARGE_BLOCK_OF_CODE в функцию, получив заказ в качестве параметра.Затем используйте его в любом количестве циклов, которое вам нужно.

0 голосов
/ 09 декабря 2010
for (i = flag?0:9; i != flag?10:0; i += flag?1:-1)
{
//LARGE_BLOCK_OF_CODE 
}

Ну, я знаю ...: p, это слишком много, если еще.

И да, решение FlipScript лучше, хотя может и не выглядеть аккуратно. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...