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

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

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

var N, M, a, b, c: integer;
d: boolean;
begin
       // 'a'  счетчик основного ряда N
  b := 1;     //необходимое кол-во в ряду
  c := 0;      //счетчик кол-ва в ряду
  d :=true;     //флаг возростания/убывания (true+/false-)
  writeln('Vvedite N > 0');
  readln(N);              //основной ряд
  writeln('Vvedite M > 0');
  readln(M);             //"ширина елки"
  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
        d := false
      else if (b=1) AND Not d then
        d := true;

    end;
  readln();
end.

vedro-compota's picture

1)

 c := 0;
 writeln();

дублирование

2)

 if (c=b) AND (d) then
        begin
          b := b + 1;
          c := 0;
          writeln();
        end
      else if (c=b) AND (Not d) then

-- есть друблирование в условиях лучше переделать на вложенный вариант по аналогии с задачей 9-11 http://fkn.ktu10.com/?q=node/8539

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

var N, M, a, b, c: integer;
d: boolean;
begin
       // 'a'  счетчик основного ряда N
  b := 1;     //необходимое кол-во в ряду
  c := 0;      //счетчик кол-ва в ряду
  d :=true;     //флаг возростания/убывания (true+/false-)
  writeln('Vvedite N > 0');
  readln(N);              //основной ряд
  writeln('Vvedite M > 0');
  readln(M);             //"ширина елки"
  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
        d := false
      else if (b=1) AND Not d then
        d := true;

    end;
  readln();
end.