Как изменить для l oop? - PullRequest
0 голосов
/ 27 января 2020

Примечание: это домашняя помощь, поэтому я постараюсь создать минимальный воспроизводимый пример, который соответствует принципам сообщества.

Задача

После того, как a для l oop перекрывает все элементы в массиве, есть ли способ сбросить значение для l oop, но на этот раз с начальным значением с другим номером?

Объяснение

Предположим, у вас есть простое для l oop:

for (int a = 0; a < 5; ++a)
    std::cout << a << " ";

Теперь давайте предположим, что он закончил переход по значениям массива. Нет проблем там. Однако есть ли способ сбросить для l oop, чтобы он снова зацикливался на массиве, но на этот раз он начинается не с a = 0, а с a = 1? И продолжайте эту схему так, чтобы третья итерация начиналась с a = 2 и так далее?

// first loop
for (int a = 0; a < 5; ++a)
    std::cout << a << " ";

// second loop
for (int a = 1; a < 5; ++a)
    std::cout << a << " ";

// third loop
for (int a = 2; a < 5; ++a)
    std::cout << a << " ";

// fourth loop
for (int a = 3; a < 5; ++a)
    std::cout << a << " ";

// fifth loop
for (int a = 4; a < 5; ++a)
    std::cout << a << " ";

Таким образом, ожидаемый результат должен быть ...

0 1 2 3 4 1 2 3 4 2 3 4 3 4 4

И просто быть ясно, что я не хочу создавать 5 отдельных циклов for, а имитировать эффекты пяти отдельных циклов for (насколько я знаю, это может быть массив из 100 целых чисел, и я бы не стал я не хочу создавать 100 отдельных циклов).

То, что я пробовал

Возможно, я думал о создании для l oop внутри для l oop и пока все выглядит хорошо ...

for (int a = 5; a > 0; --a)
{
  for (int b = 0; b < a; ++b)
  {
    std::cout << b << " ";
  }
}

Но вместо того, чтобы убрать первое число, оно убирает последнее, поэтому результат выглядел так:

0 1 2 3 4 0 1 2 3 0 1 2 0 1 0

Я на правильном пути? Чего мне не хватает?

1 Ответ

2 голосов
/ 27 января 2020

Начните внутренний l oop с индекса внешнего l oop.

for (int b = 0; b < 5; ++b) {
   for (int a = b; a < 5; ++a) {
       std::cout << a << ' ';
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...