Примечание: это домашняя помощь, поэтому я постараюсь создать минимальный воспроизводимый пример, который соответствует принципам сообщества.
Задача
После того, как 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
Я на правильном пути? Чего мне не хватает?