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

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

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

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

begin
  writeln('vvedite cislo N');
  readln(N);
  M := 2;
  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
       M := M;
       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
       M := M + 1;
       c := 1;
       v := 1;
      end;
     end;
    end;
  end;
end.
vedro-compota's picture

используйте булевские переменные для бинарных значений

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

Romakip's picture

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

begin
  writeln('vvedite cislo N');
  readln(N);
  M := 2;
  KLM := M;
  ShetTrue := 1;
  OzidaenayStroka := 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
       M := M;
       KLM := M;
       Flag := false;
       OzidaenayStroka := 2;
      end;
     end;
    end
   else
    begin
     ShetFalse := ShetFalse + 1;
     if (ShetFalse = OzidaenayStroka) then
     begin
      writeln();
      OzidaenayStroka := OzidaenayStroka + 1;
      ShetFalse := 0;
      if (OzidaenayStroka > M) then
      begin
       M := M + 1;
       OzidaenayStroka := 1;
       Flag := True;
      end;
     end;
    end;
  end;
end.