Урок 13.1 (Решенная задача номер 21)

(Урок 13.1) (Решенная задача номер 21)

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

.

var N,M, KLM, a,c,b,v: integer;

begin
  writeln('vvedite cislo N');
  readln(N);
  writeln('vvedite cislo M');
  readln(M);
  KLM := M;
  a := 1;
  c := 1;
  b := 0;
  for N:= 1 to N do
  begin
   write(N, ' ');
   if (v = 1) then
    begin
     a := a + 1;
     if (a >= KLM) then
     begin
      writeln();
      a := 1;
      KLM := KLM - 1;
      if (KLM = 1) then
      begin
       KLM := M;
       v := 0;
       c := 2;
      end;
     end;
    end
   else
    if (v = 0) then
    begin
     b := b + 1;
     if (b = c) then
     begin
      writeln();
      c := c + 1;
      b := 0;
      if (c > M) then
      begin
       c := 1;
       v := 1;
      end;
     end;
    end;
  end;
end.
vedro-compota's picture

  1. попытаться сделать более понятные имена переменных
  2. часть логики дублируется в ветках усл. оператора, а должна выполнять раз за виток цикла

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

Romakip's picture

var N,M, KLM, ShetTrue,OzidaemayStroka,ShetFalse: integer;
  Flag: boolean;

begin
  writeln('vvedite cislo N');
  readln(N);
  writeln('vvedite cislo M');
  readln(M);
  KLM := M;
  ShetTrue := 1;
  OzidaemayStroka := 1;
  ShetFalse := 0;
  for N:= 1 to N do
  begin
   write(N, ' ');
   if (Flag = True) then
    begin
     ShetTrue := ShetTrue + 1;
     if (ShetTrue >= KLM) then
     begin
      writeln();
      ShetTrue := 1;
      KLM := KLM - 1;
      if (KLM = 1) then
      begin
       KLM := M;
       Flag := false;
       OzidaemayStroka := 2;
      end;
     end;
    end
   else
    if (Flag = false) then
    begin
     ShetFalse := ShetFalse + 1;
     if (ShetFalse = OzidaemayStroka) then
     begin
      writeln();
      OzidaemayStroka := OzidaemayStroka + 1;
      ShetFalse := 0;
      if (OzidaemayStroka > M) then
      begin
       OzidaemayStroka := 1;
       Flag := True;
      end;
     end;
    end;
  end;
end.