Решение задачи №5 .Глава 14.Вывод последовательности от 1 до N "ёлочкой" с использованием процедуры

Задача №5

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N "ёлочкой", например для N=17:
1
2 3
4 5 6
7 8 9 10
11 12 13 14
15 16 17
ПРИМЕЧАНИЕ: для вывода очередной строки используйте отдельную подпрограмму

program procedure_conclusion_piramid;
var k,l,length_piramid :integer; // секция обьявления переменных

procedure conclusion_piramid( var l1, k1 ,length_pir : integer );
begin // начало тела процедуры 
var j : integer;
for j:=1 to k1 do
begin 
   if ( length_pir >= l1 ) then // если не вышли за диапазон
   begin
      write( l1 , ' ' ); // вывод символа 
      l1 += 1; // увеличиваем число на 1
   end;
end;
writeln(); // переносим строку
k1 += 1; // длинна строки больше на 1       
end; // завершение тела процедуры 
 
begin // начало тела основной программы
length_piramid := 56; // произвольная  длинна последовательности
k := 1; // количество символов в начальной строке  
l := 1;  
while ( length_piramid >= l ) do
begin  
  conclusion_piramid( l, k ,length_piramid); // вызов процедуры с передачей аргументов
end;
readln(); // удержание консоли   
end.  // завершение тела основной программы 


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

vedro-compota's picture

подпрограмма должна выводить строку целиком

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

program procedure_conclusion_piramid;
  
procedure conclusion_piramid( var  l1 : integer; k1, length_pir : integer );
var j : integer;
begin // начало тела процедуры
for j:=1 to k1 do
begin
   if ( length_pir >= l1 ) then // если не вышли за диапазон
   begin
      write( l1 , ' ' ); // вывод символа 
      l1 += 1; // увеличиваем число на 1
   end;
end;    
end; // завершение тела процедуры 
 
var k,l,length_piramid :integer; // секция обьявления переменных 
begin // начало тела основной программы
writeln( 'input piramid length : ' );
readln( length_piramid );
k := 1; // количество символов в начальной строке  
l := 1;  
while ( length_piramid >= l ) do
begin
  conclusion_piramid( l, k, length_piramid ); // вызов процедуры с передачей аргументов
  writeln(); // переносим строку
  k += 1; // длинна строки больше на 1
end;
readln(); // удержание консоли   
end.  // завершение тела основной программы 
vedro-compota's picture

function conclusion_piramid -- лучше сделать процедурой, убрать лишние передачи значений по ссылке.

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