Задача 21 Урок 13

Урок 13.1

Пользователь передает целое положительное число N, выведете на экран
последовательность от 1 до N, так чтобы ширина "ёлочки" росла волнами. Например,
для N=49 получим (смотри консоль):

var n, m, c, d, k : integer;
    e : boolean;

begin
  c := 1; 
  writeln('Vvedite celoe polozhitelnoe chislo');
  readln(n);
  m := 1; 
  d := 0;
  e := true;
  k := 2;
  if n > 0 then
  begin
    for c := 1 to n do
    begin
        write(c, ' ');
        d := d + 1;
        if d > (m - 1) then
        begin
          writeln();
          if e and (m = k) then
            e := not e
          else if not e and (m = 1) then
          begin
            e := not e;
            k := k + 1;
          end;
          if e then
            m := m + 1
          else if not e then
            m := m - 1;
          d := 0;
        end;
    end; 
  end
  else
    writeln ('Error!');
end.

КОНСОЛЬ

Vvedite celoe polozhitelnoe chislo
50
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 50 

vedro-compota's picture

 if d > (m - 1) then

логичнее было бы написать

d = m

-- проверить

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

var n, m, c, d, k : integer;
    e : boolean;

begin
  c := 1; 
  writeln('Vvedite celoe polozhitelnoe chislo');
  readln(n);
  m := 1; 
  d := 0;
  e := true;
  k := 2;
  if n > 0 then
  begin
    for c := 1 to n do
    begin
        write(c, ' ');
        d := d + 1;
        if d = m then
        begin
          writeln();
          if e and (m = k) then
            e := not e
          else if not e and (m = 1) then
          begin
            e := not e;
            k := k + 1;
          end;
          if e then
            m := m + 1
          else if not e then
            m := m - 1;
          d := 0;
        end;
    end; 
  end
  else
    writeln ('Error!');
end.

КОНСОЛЬ

Vvedite celoe polozhitelnoe chislo
50
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 50