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

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

Модифицируйте предыдущую задачу так, чтобы в каждой чётной (той, у которой номер чётный) строке выводилось N символов, а в каждой нечетной N/2 символов (сделайте проверку того, что N/2 больше нуля)

предыдущая:

M раз выведете на экран числа от 1 до N с помощью вложенных циклов. Так чтобы в консоли было:
1...N}
1...N}M раз

var i, c, N, M:integer;
begin
  write('vvedi dliny stroki ');
  readln(N);
  write('vvedi kol-vo strok ');
  readln(M);
if(N>0) then
  begin
    for i := 1 to (M) do
      begin
      if((i mod 2) = 0)then
        begin
          for c := 1 to (N) do
            write(c, ' ');
          writeln();
        end
        else
          begin
            for c := 1 to (N div 2) do
              write(c, ' ');
            writeln();
          end;
      end;
  end
  else
    writeln('ERROORR');
readln();
end.     
vedro-compota's picture

переделать тело *внутренного цикла, в стиле:

// определяем очедной значение правойГраницы
for c := 1 to (праваяГраница) do 

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

Внешний цикл определяет кол-во строк. Убрав его внутрь возможно ли будет реализовать условие задачи?

vedro-compota's picture

переделать тело *внутреннего (исправлено) цикла, в стиле:

// определяем очедной значение правойГраницы
for c := 1 to (праваяГраница) do 

фактически код внутреннего цикла продублирован, можно просто вычислить правую границу заранее

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

var i, c, N, M, R:integer;
begin
  write('vvedi dliny stroki ');
  readln(N);
  write('vvedi kol-vo strok ');
  readln(M);
  R:=N;
  if(N > 0) then
    begin
      for i := 1 to (M) do
        begin
          if((i mod 2) <> 0)then
            N := N div 2
          else
            N := R;
          for c := 1 to (N) do
            write(c, ' ');
          writeln();
        end;
    end
  else
    writeln('ERROORR');
  readln();
end. 
vedro-compota's picture

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

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