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

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

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

Просьба подсказать как переносить одну, потом две строки, потом три строки?

var
i,n,j,m:integer;
begin
i:=1; // начальное значение счетчика
j:=0;// начальное значение для внутреннего счетчика
writeln('Vvedite chislo ogranichitel');
readln(m);
writeln('Vvedite chislo');
readln(n);
    while i<=n do
       begin
       m:=1;
       j:=j+1; // запускаем внутренний счетчик

       if(j < m) then
         begin
           writeln('  ');
           j:=0; //обнуляем внутренний счетчик
         end;

        if (m = 1) then
          begin
             writeln(i, ' ');
             i:=i+1; // изменяем значение счетчика
          end
       end;
    readln();
end.               
vedro-compota's picture

  1. Определитесь какая переменная отвечает за длину строки
  2. Создайте дополнительную переменную, которая показывает должна ли длина строки увеличиваться или уменьшаться

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

gani84's picture

Но немного не то
За длину строки отвечает переменная j

Вывод консоли
vvedite chislo N:
12
vvedite chislo M:
3

1
2 3
4 5
6 7
8 9
10 11
12
var n, i, j, m,k:integer;
begin
  writeln('vvedite chislo N:');
  readln(n);
  writeln('vvedite chislo M:');
  readln(m);
  k:=1;
  j:=0;
  writeln();
  for i:=1 to N do
  begin

    write(i, ' ');
    j := j + 1;

    if (j>=k) AND (m>=k)  then
     begin
       writeln();
       j:=0;
       k:=k+1;

     end
     else begin
         if (j<=m) AND (j<=k) then begin
      k:=k-1;
      j:=j-1;
     end;

  end;

end;

  readln();
end.
vedro-compota's picture

Решите предварительно задачи 14, 14 и 16 отсюда: http://fkn.ktu10.com/?q=node/7341

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