Урок 13.1 Задача 20

Урок 13.1 Задача 20:

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N "ёлочкой", например для N=18:

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18

ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно).
Решите указанными двумя способами.

Одним циклом:

var
a, i, j, n :integer;
begin
  j:=1;                       // ограничитель числел в строке, начинаем с 1
  write('Введите число N: '); // просим ввести максимальное число
  readln(n);                  // считываем максимальное число
  for a:=1 to n do            // счетчик со сплошной нумерацией от 1 до максимального числа
  begin
    i:=i+1;                   // увеличиваем счетчик чисел в строке на 1
    write(a, ' ');            // выводим значения счетчика со сплошной нумерацией на экран в строку
    if (i=j) then
    begin                     // если счетчик чисел сравнялся с ограничителем
      writeln ();               // переходим на новую строку
      j:=j+1;                   // увеличиваем ограничитель на 1
      i:=0;                     // обнуляем счетчик чисел в строке
    end;
  end;
  readln();
end.

Вывод в консоли:

Введите число N: 34
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34

Вложенными циклами:

var
a, i, j, n :integer;
begin
  write('Введите число N: ');   // просим ввести максимальное число
  readln(n);                    // считываем максимальное число
  while (a<n) do                // внешний цикл
  begin
    i:=0;                       // сбрасываем счетчик чисел в строке
    j:=j+1;                     // увеличиваем ограничитель чисел в строке на 1
    while ((i<j) and (a<n)) do  // вложенный цикл, работает, пока счетчик чисел не дойдет до ограничителя и пока сплошной счетчик не дойдет до максимального числа
    begin
      a:=a+1;                      // увеличиваем сплошной счетчик на 1
      i:= i+1;                     // увеличиваем счетчик чисел в строке на 1
      write(a, ' ');               // выводим значение сплошного счетчика на экран в строку через пробел
    end;                        // конец вложенного цикла
    writeln ();                 // переходим на новую строку
  end;
  readln();
end.      

Вывод в консоли:

Введите число N: 24
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21
22 23 24