Задание 21 Урок 13.1

Задание 21 Урок 13.1

Пользователь передает целые положительные число N и M, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" увеличивалась до M чисел, то уменьшалась до 1. Например, для M=3 и N=25 получим:
см. урок

var counter_i,counter_z,line_break,before,n,m : integer;
begin
  line_break := 1;
  counter_i := 1;
  before := 0;
  write('Введите N и М через пробел и нажмите ENTER: ');
  readln(n,m);
   while (counter_i <= n) do
   begin
     for counter_z := 1 to line_break do
       if (counter_i > n) then
         break
       else
       begin
         write(counter_i, ' ');
         counter_i += 1;
       end;
     writeln();
     if (line_break > before) and (line_break = m) then
     begin
       line_break := before + 1;
       before := m + 1;
     end
     else
       if (line_break < before) and (line_break = 1) then
           before := 0;
     if (line_break > before) then
     begin
       line_break += 1;
       before += 1;
     end
     else
     begin
       line_break -= 1;
       before -= 1;
     end;
   end;
  readln();
end.
vedro-compota's picture

заменить бинарные значения на булевские переменные

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

vedro-compota's picture

+ добавить решение одним циклом

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

var counter_i,counter_z,line_break,n,m : integer;
  before : boolean;
begin
  line_break := 1;
  counter_z := 0;
  before := true;
  write('Введите N и M через пробел и нажмите ENTER: ');
  readln(n,m);
  for counter_i := 1 to n do
  begin
    write(counter_i, ' ');
    counter_z += 1;
    if (counter_z = line_break) then
    begin
      writeln();
      if (line_break = m) then
        before := true
      else
        if (line_break = 1) then
          before := false;
      if ((line_break >= 1) and (before = false)) then
        line_break += 1
      else
        if ((line_break <= m) and (before = true)) then
          line_break -= 1;
      counter_z := 0;
    end;
  end;
  readln();
end.
vedro-compota's picture

решение засчитано

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