Решение задачи №22 из главы 13.1

Задача №22 из главы 13.1

Пользователь передает целые положительные число N, выведете на экран последовательность от 1 до N, так чтобы ширина "ёлочки" росла волнами.

Вывод Консоли

Vvedite chislo 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,z,s:integer;
    f:boolean;
begin
  writeln('Vvedite chislo N');
  readln(n);
  z:=0; //счетчик
  s:=1; //счетчик кол-ва символов
  m:=0;//счетчик ограничитель
  writeln();
  for i:=1 to n do
  begin
    write(i,' ');
    z:=z+1;//счетчик кол-ва строк
    m:=m+1;
    if (s = 1) then //если кол-во символов равно 1
       f:=false //флаг выключается
    else if (s = m) then
       f:=true; //флаг включается

    if (z=s) then
    begin
       writeln();// делаем перенос строки
       z:=0;

       if (f=true) then //условие для флага включенного
           s:=s-1
       else
           s:=s+1  //условие для флага выключенного
    end;
  end;
  readln();
end.            
vedro-compota's picture

неверно

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

gani84's picture

Вывод консоли

Vvedite chislo N
45
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
var n,k,i,j,s:integer;
    f:boolean;
begin
  f:=true;
  j:=1;
  i:=1;
  k:=1;
  writeln('Vvedite chislo N');
  readln(n);
  while f do
  begin
    while f and (k <= j+1) do
    begin
      for s:=1 to k do
      begin
        write(i,' ');
        i:=i+1;
        if(i > n) then
        begin
          writeln();
          f:=false;
          break;
        end;
      end;
      writeln();
      k:=k+1;
    end;
    while f and (k-1 >= 2) do
    begin
      for s:=k-1 downto 2 do
      begin
        write(i,' ');
        i:=i+1;
        if(i>n) then
        begin
          writeln();
          f:=false;
          break;
        end;
      end;
      writeln();
      k:=k-1;
    end;

    j:=j+1;
    k:=2;
  end;
  readln();
end. 

решение верное, но нужен доп. вариант - решение одним циклом.

_________ _ _ ______
dthcbz фкн вгу and co