Решение задачи № 21 из главы 13.1.Выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" увеличивалась до M

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

Задача № 21

program pascal_piramid_more_less;
  
var start_length_string
,max_length_string,last_carry_string,i,fix_number,piramid_length :integer;
  
begin
start_length_string := 1; // начальная длинна строки до переноса
last_carry_string := 0; // выведено с  последнего переноса
max_length_string := 3; // максимальная длинна  строки
fix_number := 1; // учитываем , что начальная длинна строки равна 1           
  
piramid_length := 76; // количество элементов
for i:=1 to piramid_length do // выведем значения от 1 до 76
begin
write( i , ' ' );
last_carry_string +=1; // учтем что выведено один символ
  if( max_length_string > fix_number ) then // выполняем блок 1 пока верно условие
  begin
   if ( last_carry_string >= start_length_string ) then // пора переносить строку
   begin
      writeln();// перенос строки
      last_carry_string := 0; // после переноса сбрасываем  счетчик 
      start_length_string +=1; // в следующий раз длинна строки увеличится на 1
      fix_number +=1; // увеличиваем на 1 
      end;
  end;
    
    if( fix_number = max_length_string ) then // выполняем блок 2 пока верно условие  
    begin
       if ( last_carry_string >= start_length_string ) then // пора переносить строку
       begin
       writeln(); // перенос строки
       last_carry_string:= 0; // выведено с  последнего переноса
       start_length_string-=1; // уменьшаем ширину пирамиды на 1
          if( start_length_string = 1 ) then // длинна достигла начального значения 
             fix_number := 1; // присваиваем начальное значение 
       end;
    end;
end;
writeln();
readln();
end.

Key Words for FKN + antitotal forum (CS VSU):