Как переписать вложенный цикл for при помощи одного цикла while?

Приветствую!

Есть фрагмент кода на C:
for(int j = 1; j < 3; j++) 
    for(int i = 1; i < j+1; i++)
        printf("%d ", i);


Есть задание переписать этот фрагмент используя всего один цикл while. Хотелось бы взглянуть на разные варианты решения. Пока все, что приходит в голову это добавить условия в цикл и в определенный момент обнулять одну из переменных и начинать отсчет/вывод сначала.
  • Вопрос задан
  • 408 просмотров
Пригласить эксперта
Ответы на вопрос 1
sfi0zy
@sfi0zy
Creative frontend developer
Ну в целом вам правильно в голову приходит, но вариант с двумя циклами, данный изначально, выглядит более понятным что-ли, более читаемым. Ну только счетчики переименовать можно (обычно i,j,k используют во вложенных циклах именно в таком порядке - обратный порядок сбивает с толку).
int i = 1, j = 1;
do {
  std::cout << j;
  if (++j > i) {
    j = 1;
    i++;
  }
} while (i < 3);

P.S.: вообще-то можно еще с goto поизгаляться, но это уже слишком...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы