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

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

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

Два цикла:

var a,b,m,i:integer;
    p:boolean;
begin
  p:=true;
  b:=8;
  m:=2;
  writeln('vvedite chislo bolshe 8');
  readln(a);
  if a<=8 then
    writeln('Error')
  else
  while (b<=a) do
  begin
    for i:=1 to m do
    begin
      if (b<=a) then
        write(b,' ')
      else
        p:=false;
      b:=b+2;
    end;
    if (p) then
      begin
        write(3,' ');
        m:=m+1;
      end;
  end;
  readln();
end.

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

vvedite chislo bolshe 8
25
8 10 3 12 14 16 3 18 20 22 24 3

Используя делимость нацело (для определения момента вывода тройки):

var a,b,m,j:integer;
begin
  m := 2;
  b := 8;
  j:=0;
  writeln('vvedite chislo bolshe 8');
  readln(a);
  if a<=8 then
    writeln('Error')
  else
    repeat
      write (b, ' ');
      b+= 2;
      j+= 1;
      if (j mod 2 = 0) and (j = m) then
      begin
        write (3, ' ');
        j := 0;
        m += 1;
      end
      else if (j mod 2 = 1) and (j = m)then
      begin
        write (3, ' ');
        j := 0;
        m += 1;
      end;
    until (b > a);
  readln();
end.  

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

vvedite chislo bolshe 8
25
8 10 3 12 14 16 3 18 20 22 24 3

Не используя делимость нацело (для определения момента вывода тройки).:

var a,b,m,j:integer;
begin
  m := 2;
  b := 8;
  j:=0;
  writeln('vvedite chislo bolshe 8');
  readln(a);
  if a<=8 then
    writeln('Error')
  else
    repeat
      write (b, ' ');
      b+= 2;
      j+= 1;
      if (j mod 2 = 0) and (j = m) then
      begin
        write (3, ' ');
        j := 0;
        m += 1;
      end
      else if (j mod 2 = 1) and (j = m)then
      begin
        write (3, ' ');
        j := 0;
        m += 1;
      end;
    until (b > a);
  readln();
end.  

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

vvedite chislo bolshe 8
35
8 10 3 12 14 16 3 18 20 22 24 3 26 28 30 32 34 3