Урок 14. Задача №5. Решение.

Урок 14. Задача №5.

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N "ёлочкой", например для N=17:

1
2 3
4 5 6
7 8 9 10
11 12 13 14
15 16 17

ПРИМЕЧАНИЕ: для вывода очередной строки используйте отдельную подпрограмму.

procedure myWrite(z : integer);
begin
 write(z, ' ');
end;

procedure My_writeln();
begin
 writeln();
end;

var i, j, count, value : integer;
begin
  writeln('Enter positiv integer: ');
  readln(value);
  count := 1;
  for i := 1 to value do
  begin
    myWrite(i);
    if(j < count) then
    begin
      My_writeln();
      j += 1;
      count := 0;
    end;
    count += 1;
  end;

  readln(); // Удержание консоль
end.// Завершение программы      
vedro-compota's picture

замечание аналогично этому: http://fkn.ktu10.com/?q=comment/3886#com...

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

Firons's picture

procedure myWrite(z : integer);
begin
 write(z, ' ');
end;

procedure My_writeln();
begin
 writeln();
end;

procedure printPyramid(h : integer);
var i, j, count : integer;
begin
  j := 0;
  count := 1;
  for i := 1 to h do
  begin
    myWrite(i);
    if(j < count) then
    begin
      My_writeln();
      j += 1;
      count := 0;
    end;
    count += 1;
  end;
end;

var value : integer;
begin
  writeln('Enter positiv integer: ');
  readln(value);
  printPyramid(value);

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

не то, нужно чтобы процедура отвечала только за строку, а тут она отвечает все решение.

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

Firons's picture

procedure myWrite(z : integer);
begin
 write(z, ' ');
end;

procedure My_writeln();
begin
 writeln();
end;

procedure printPyramid(x, y: integer; var z: integer);
var j: integer;
begin
  for j := 1 to x do
  begin
    if(z <= y) then
    begin
      myWrite(z);
      z += 1;
    end;
  end;
  My_writeln();
end;

var i, count, value: integer;
begin
  writeln('Enter positiv integer: ');
  readln(value);
  i := 1;
  count := 1;
  while(i < value) do
  begin
    printPyramid(count, value, i);
    count += 1;
  end;

  readln(); // Удержание консоль
end.// Завершение программы 
vedro-compota's picture

в целом хорошо.
Предлагаю избавить от передачи z по ссылки.

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

Firons's picture

function printRow(x, y, z: integer): integer;
var j: integer;
begin
  for j := 1 to x do
  begin
    if(z <= y) then
    begin
      write(z, ' ');
      z += 1;
    end;
  end;
  writeln();
  result := z;
end;

var i, count, value: integer;
begin
  writeln('Enter positiv integer: ');
  readln(value);
  i := 1;
  count := 1;
  while(i < value) do
  begin
    i := printRow(count, value, i);
    count += 1;
  end;

  readln(); // Удержание консоль
end.// Завершение программы