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

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

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

var N, M, a, b, c: integer;
d: boolean;
begin
       // 'a'  счетчик основного ряда N
  b := 1;     //необходимое кол-во в ряду
  c := 0;      //счетчик кол-ва в ряду
  d :=true;     //флаг возрaстания/убывания (true+/false-)
  M := 2;      //максимальная "высота" 
  writeln('Vvedite N > 0');
  readln(N);              //основной ряд
  for a:=1 to N do
    begin
      write(a, ' ');                 //в каждой итерации
      c := c + 1;                  //
      if (c=b) AND (d) then             //условие нарастания
        begin
          b := b + 1;
          c := 0;
          writeln();
        end
      else if (c=b) AND (Not d) then    //условие убывания
        begin
          b := b - 1;
          c := 0;
          writeln();
        end;
      if (b=M) AND d then                  //условие смены флага нарастания и
        begin                                       // максимальной "высоты"
          d := false;
          M := M + 1;
        end
      else if (b=1) AND Not d then     //условие смены флага убывания
        d := true;
    end;
  readln();
end.
vedro-compota's picture

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

var N, M, a, b, c: integer;
d: boolean;
begin
       // 'a'  счетчик основного ряда N
  b := 1;     //необходимое кол-во в ряду
  c := 0;      //счетчик кол-ва в ряду
  d :=true;     //флаг возрaстания/убывания (true+/false-)
  M := 2;      //максимальная "высота"
  writeln('Vvedite N > 0');
  readln(N);              //основной ряд
  for a:=1 to N do
    begin
      write(a, ' ');                 //в каждой итерации
      c := c + 1;                  //
      if (c=b) then            //условие нарастания
        begin
          c := 0;
          writeln();
          if d then
            b := b + 1
          else
            b := b - 1;
        end;
      if (b=M) AND d then                  //условие смены флага нарастания и
        begin                                       // максимальной "высоты"
          d := false;
          M := M + 1;
        end
      else if (b=1) AND Not d then     //условие смены флага убывания
        d := true;
    end;
  readln();
end.