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

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

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

вложенными циклами

var n, d, m, i : integer;
begin
  d := 8;
  m := 2;
  writeln('vvedite chislo');
  readln(n);
  if n < 8 then
     writeln('oshibka')
  else
     repeat
       for i := 1 to m do
          begin
            if d > n then
              break;
            write(d,' ');
            d := d + 2;
          end;
     write(3,' ');
     m := m +1;
     until d > n ;
  readln();
end.         
одним циклом используя делимость нацело
var n, d, m, i : integer;
begin
  d := 8;
  m := 1;
  i := 2;
  writeln('vvedite chislo');
  readln(n);
  if n < 8 then
     writeln('oshibka')
  else
     repeat
       if d > n then
          break;
       write(d,' ');
       d := d + 2;
         if (m div i = 1) then
           begin
             write(3,' ');
             i := i + 1;
             m := 1;
           end
         else
            m := m + 1;
     until d > n ;
  readln();
end.             

одним циклом не используя делимость нацело

var n, d, m, i : integer;
begin
  d := 8;
  m := 1;
  i := 2;
  writeln('vvedite chislo');
  readln(n);
  if n < 8 then
     writeln('oshibka')
  else
     repeat
       if d > n then
          break;
       write(d,' ');
       d := d + 2;
         if m = i  then
           begin
             write(3,' ');
             i := i + 1;
             m := 1;
           end
         else
            m := m + 1;
     until d > n ;
  readln();
end.                
vedro-compota's picture

засчитано

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