pascal Вложенные блоки условия if, уход от дублирования кода. Разбор примера

Задача

Есть программа:

var z,s:integer;
  f:boolean;
begin
  s:=1;
  if (z=s) and (f=false) then
    begin
      writeln();// делаем перенос строки
      z:=0;
      s:=s+1;//но увеличиваем кол-во строк
    end;

  if (z=s) and (f=true) then
    begin
      writeln(); // делаем перенос строки
      z:=0;
      s:=s-1;//но уменьшаем кол-во строк
    end;
end.    

-- в двух условных операторах действия частично совпадают, а значит наблюдается дублирование кода. Перепишите код так, чтобы дублирования не было.

(из урока на условный оператор)

Разбор решения

Начать переписывать можно так:


if (z=s) then
begin
    writeln();
    z:=0;
    if (f=true) // ......

-- если этой подсказки не достаточно или просто для лучшего понимания, смотрите этот видео-разбор

Key Words for FKN + antitotal forum (CS VSU):