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

Вложенные циклы

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

var n,m,f,i: integer;
begin
  f:=8;
  m:=2;
  writeln('write num >= 0');
  readln(n);
  if (n<0) then
    writeln('err: your num < 0')
  else
    begin
      while (f<n) do
        begin
          for i:=1 to m do
            begin
              if (f>=n) then
                break;
              write(f,' ');
              f:=f+2;
            end;
          write(3,' ');
          m:=m+1;
         end;
    end;
readln();
end.
//write num >= 0
//33
//8 10 3 12 14 16 3 18 20 22 24 3 26 28 30 32 3      

{13.1 — 18 решение одним циклом используя делимость нацело (для определения момента вывода тройки),
}

var n,m,f,i: integer;
begin
  f:=8;
  m:=1;
  i:=2;
  writeln('write num >= 0');
  readln(n);
  if (n<0) then
    writeln('err: your num < 0')
  else
    begin
      while (f<n) do
        begin
          write(f,' ');
          f:=f+2;
          if (m div i = 1)then
            begin
              write(3,' ');
              i:=i+1;
              m:=1;
            end
          else
            m:=m+1;
        end;
    end;
  writeln('over');
  readln();
end.
begin
//write num >= 0
//39
//8 10 3 12 14 16 3 18 20 22 24 3 26 28 30 32 34 3 36 38 

{13.1 — 18 решение одним циклом НЕ используя делимость нацело (для определения момента вывода тройки),
}

var n,m,f,i: integer;
begin
  f:=8;
  m:=1;
  i:=2;
  writeln('write num >= 0');
  readln(n);
  if (n<0) then
    writeln('err: your num < 0')
  else
    begin
      while (f<n) do
        begin
          write(f,' ');
          f:=f+2;
          if (m = i) then
            begin
              write(3,' ');
              i:=i+1;
              m:=1;
            end
          else
            m:=m+1;
        end;
    end;
  writeln('over');
  readln();
end.
begin
//  write num >= 0
//32
//8 10 3 12 14 16 3 18 20 22 24 3 26 28 30 over      
vedro-compota's picture

while (f<n) do
        begin
          for i:=1 to m do
            begin
              if (f>=n) then
                break;
              write(f,' ');
              f:=f+2;
            end;
          write(3,' ');
          m:=m+1;
         end;

Если число повторений известно - то лучше использовать цикл for. Решение засчитано

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