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

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

Модифицируйте решение предыдущей задачи, так, чтобы длина возрастающего фрагмента каждый раз увеличивалась на единицу (начиная с двух)

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

Решение одним циклом, без использования делимости нацело

program zadacha17;
var i, j, n, m: integer;
begin
  writeln('Vvedite chislo N:');
  readln(n);
  i := 8;
  j:=0;
  m:=2;
  if (n >= 8) and (n > 0) then
    while i <= n do
    begin
      write(i,' ');
      i := i + 2;
      j:=j+1;
        if j = m then
        begin
          write('3 ');
          j:=0;
          m:=m+1;
        end;
    end
  else
    writeln('Chislo ne sootvetstvyet kriteriyam');
  readln();
end.

В один цикл, с проверкой mod

program zadacha17;
var i, j, n, m: integer;
begin
  writeln('Vvedite chislo N:');
  readln(n);
  i := 8;
  j:=0;
  m:=4;
  if (n >= 8) and (n > 0) then
    while i <= n do
    begin
      if i mod 2 = 0 then
        write(i,' ');
        i := i + 1;
        j:=j+1;
          if j = m then
          begin
            write('3 ');
            j:=0;
            m:=m+2;
          end;
    end
  else
    writeln('Chislo ne sootvetstvyet kriteriyam');
  readln();
end.  

Вложенными циклами:

program zadacha17;
var i, j, n, m: integer;
begin
  writeln('Vvedite chislo N:');
  readln(n);
  i := 8;
  m := 4;
  if (n >= 8) and (n > 0) then
    while i<=n do
    begin
      j:=1;
      while j <= m do
      begin
        if (i mod 2 = 0) and (i<=n) then
          write(i,' ');
          i:=i+1;
          j:=j+1;
      end;
      m := m+2;
        if i <= n then
          write('*3* ');
    end
  else
    writeln('Chislo ne sootvetstvyet kriteriyam');
  readln();
end.     
vedro-compota's picture

исправить форматирование

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