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

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

Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух):
8 10 3 два числа 3 10 12 14 3 три числа 3 16 18 20 22 3 четыре числа 3....3....и т.д.

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

Решение:

program u13z17;
var i,j,m,n: integer;
begin
  write('vvedite chislo n - ');
  readln(n);
  m:=2;
  if n>=8 then
  begin
    i:=8;
    while i<=n do
    begin
      if j=m then
      begin
        write(3,' ');
        j:=0;
        m:=m+1;
      end
      else
      begin
        write(i,' ');
        i:=i+2;
        j:=j+1;
      end;
    end;
  end
  else
    writeln('ERROR');
  readln();
end.

var i,j,m,n:integer;
begin
  write('vvedite chislo n - ');
  readln(n);
  m:=2;
  i:=8;
  if n<0 then
    writeln('ERROR')
  else
  begin
    while (i<=n) do
    begin
      for j:=1 to m do
      begin
        if (i<=n) then
        begin
          write(i,' ');
          i:=i+2;
        end;
      end;
      m:=m+1;
      write(3,' ');
    end;
  end;
  readln();
end.

var i,j,m,n:integer;
begin
  write('vvedite chislo n - ');
  readln(n);
  m:=2;
  i:=8;
  j:=0;
  if n>=8 then
  begin
    while (i<=n) do
    begin
      if (i mod 2 = 0) then
        write(i,' ');
      i:=i+2;
      j:=j+1;
      if j = m then
      begin
        write(3,' ');
        j:=0;
        m:=m+1;
      end;
    end;
  end
  else
    writeln('ERROR');
  readln();
end.
  

Консоль:

vvedite chislo n - 50
8 10 3 12 14 3 16 18 20 22 3 24 26 28 30 3 32 34 36 38 40 42 3 44 46 48 50