Задача 20 Урок 13.1

Задача 20 Урок 13.1:

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

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

ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно).
Решите указанными двумя способами.

Вложенные циклы:

program task20v1;
var i,a,m,n: integer;
begin
  writeln('vvedite chislo n');
  readln(n);
  a:=1;
  m:=1;
  while (a<=n) do
  begin
    for i:=1 to m do
    begin
      if (a<=n)then
        write(a,' ');
      a:=a+1;
    end;
    m:=m+1;
    if (a<=n)then
      writeln();
  end;
  readln();
end.    

1 цикл:

program task20v2;
var a,b,n,c: integer;
begin
  writeln('vvedite chislo n');
  readln(n);
  c:=1;
  while (n>0) do
  begin
    if (a<=b) then
    begin
      write(c,' ');
      a:=a+1;
      n:=n-1;
      c:=c+1;         //увеличение числа на выводе
    end
    else              //переходим на новую строку
    begin
      writeln();
      b:=b+1;         //кол-во строк
      a:=0;           //кол-во символов
    end;
  end;
  readln();
end.      
vedro-compota's picture

Инструкция:

write(c,' ');

может выполняться в теле цикла без каких-либо условий, попробуйте переписать так

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

Ваш комментарий скорее всего от задачи Задача 21 Урок 13.1

program task20v2;
var a,b,n,c: integer;
begin
  writeln('vvedite chislo n');
  readln(n);
  c:=1;
  while (n>=c) do
  begin
    if (a<=b) then
    begin
      write(c,' ');
      a:=a+1;
      c:=c+1;         //увеличение числа на выводе
    end
    else
    begin
      writeln();
      b:=b+1;         //кол-во символов в строке которое нужно вывести
      a:=0;           //кол-во символов которое вывелось с начала строки
    end;
  end;
  readln();
end.