Задача 19 Урок 13.1

Задача 19 Урок 13.1

Пользователь передает целое положительное число N, выведете на экран последовательность от 1 до N "ёлочкой", например для N=17:


1
2 3
4 5 6
7 8 9 10
11 12 13 14
15 16 17

ПРИМЕЧАНИЕ: эту задачу можно решить, как вложенными циклами, так и вообще одним циклом (что более изящно).
Решите указанными двумя способами.

// вложенные циклы
var N, i, k, S:integer;
begin
  i := 1;
  k := 1;
  write('vvedi chislo N ');
  readln(N);
  repeat
    for S := 1 to k do
      begin
        if(i <= N) then // чтобы не выходить за предел N
          begin
            write(i,' ');
            i := i + 1;
          end;
      end;
    k := k + 1;
    writeln();
    if(k = 5) then
      k := 1 ;
  until(i > N) ;
readln();
end.  
// одним циклом
var M, N, k, L:integer;
begin
  L := 2;  //  динамический ограничитель длины фрагмента(изменяется)
  k := 2; // длина фрагмента
  M := 1; // стартовое число
  write('vvedi chislo N ');
  readln(N);
    repeat
      write(M,' ');
      M := M + 1;
      if((k mod L)=0) then  // измененеие длины строки
        begin
          writeln();
          k := 1;
          L := L + 1;
        end;
    if(L > 5) then  // предельное ограничнее по ширине
      L := 2;
    k := k + 1;
    until(M > N);
readln();
end.   
vedro-compota's picture

решение одним циклом лучше переделать через for, mod() там не требуется

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

// одним циклом
var i, N, k, L:integer;
begin
  k := 0; // счетчик символов в строке
  L := 1; // длина строки мах
  write('vvedi chislo N ');
  readln(N);
  for i:=1 to N do
    begin
      if(k = (L-1)) then
        begin
          writeln(i,' ');
          L := L + 1;
          k := 0;
        end
      else
        begin
          write(i,' ');
          k := k + 1;
        end
    end;
  readln();
end. 
vedro-compota's picture

решение засчитано

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