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

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

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" росла волнами.

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

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

Введите число N: 43
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 35 36
37 38 39 40 41
42 43

vedro-compota's picture

засчитано

_____________
матфак вгу и остальная классика =)