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

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

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

#1
var N, a, b, c, i : integer;

begin
  write('Enter an integer 7+ : ');
  readln(N);
  a := 8;
  b := 8;
  c := 2;
  if N < 8 then
    writeln('Error')
  else
    while (a < N) do
    begin
      a := a + 3;
      for i := 1 to c do
      begin
        if (b <= N) then
          write(b, ' ');
          b := b + 2;
      end;
      if b <= N then
        write(3, ' ');
        c := c + 1;
    end;
  readln();
end.

#2
var N, a, b, c, i : integer;

begin
  write('Enter an integer 7+ : ');
  readln(N);
  a := 8;
  b := 0;
  c := 2;
  if N < 8 then
    writeln('Error')
  else
    for i := a to N do
    begin
      if (i mod 2 = 0) then
      begin
        b := b + 1;
        write(i, ' ');
      end
      else
        if (b = c) then
        begin
          c := c + 1;
          b := 0;
          write(3,' ');
        end;
    end;
  readln();
end.