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

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

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" росла волнами. Например, для N=49 получим:
1
2 3--сначала до двух
4
5 6
7 8 9--потом до трёх
10 11
12--возвращаемся к одному
13 14
15 16 17
18 19 20 21--тут уже четыре
22 23 24
25 26--снова убывает
27
28 29
30 31 32
33 34 35 36
37 38 39 40 41
42 43 44 45
46 47 48
49

var
  n, m, i, j, count: integer;
  flag: boolean;
begin
  n:= 49;//число введенной пользователем
  m:= 1;//max кол-во символов в строке
  j:= 0;//количество символов в строке
  count:= 1;// счетчик
  for i:= 1 to n do
     begin
       write(i, ' ');
       j:= j + 1;
       if (count = 1) then
         begin
           flag:= true;
           m:= m + 1;
         end;
       if (j = count) then
         begin
            writeln();
            if (count < m) and flag then
               count:= count + 1
            else
              begin
                count:= count - 1;
                flag:= false;
              end;
            j:= 0;
         end;
     end;
  readln();
end.           
vedro-compota's picture

count:= 1;// счетчик

-- неточно, уточнить смысл

if (count < m) and flag then

-- избыточное условие

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


Переделал

var
  N, M, i, j, count: integer;
  flag: boolean;
begin
  N:= 50;//число введенной пользователем
  i:= 1;//счетчик основного цикла
  j:= 0;//количество символов в текущей строке
  count:= 1;//max кол-во символов в текущей строке
  M:= 1;//max кол-во символов в строке
  flag:= true;
  for i:= 1 to N do
     begin
       write(i, ' ');
       j:= j + 1;
       if (j = count) then
         begin
           writeln();
           if count = m then
             begin
             flag:= false;
             inc(m);
             end;
           if count = 1 then
              flag:= true;
           if flag then
              count:= count + 1;
           if (not flag) then
              count:= count - 1;
           j:= 0;
         end;
     end;
  readln();
end.