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

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

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

var counter_i,counter_z,line_break,before,n,m : integer;
begin
  line_break := 1;
  counter_i := 1;
  before := 0;
  m := 2;
  write('Введите N и нажмите ENTER: ');
  readln(n);
   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;
       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

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

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

var counter_i,counter_z,line_break,n,m : integer;
  before : boolean;
begin
  line_break := 1;
  counter_z := 0;
  before := true;
  m := 2;
  write('Введите N и нажмите ENTER: ');
  readln(n);
  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
      begin
        before := true;
        m += 1;
      end
      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

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

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