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

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

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

Вариант 1

var
  a, i, j: integer;
  l: integer; //ожидаемая длинна строки
begin
  a:= 50;//пользовательское число
  l:= 1;
  if a > 0 then
     begin
       i:= 8;
       while i <= a do
         begin
           for j:= 0 to l do
              begin
                write(i, ' ');
                i:= i + 2;
              end;
           l:= l + 1;
           write(3, ' ');
         end;
     end
  else
  write('Oschibka. Vvedite pologitelnoe chislo');
  readln();
end.  

Вариант 2

var
  i, l, inc: integer;
  a: integer;
begin
  writeln('Vvedite celoe pologitelnoe chislo');
  readln(a);
  i:= 8;
  inc:= 2;
  if (a > 0) then
  begin
      while (i <= a) do
       begin
         if l <> inc then
            begin
               write(i, ' ');
               i:= i + 2;
               l:= l + 1;
            end
         else
            begin
            write (3, ' ');
            inc:= inc + 1;
            l:= 0;
            end;
       end;
  end
  else
    writeln('Oschibka');
  readln();
end.