Задача 11 урок 9

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

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().
Если идей нет, смотрите разбор решения.

program project911;
var z,s:integer;
  f:boolean;
begin
  s := 1;
  z := 0;
  f := false;
  if (z = s) then
    begin
    writeln();
    z := 0;
    if (f = false) then
      begin
      end
    else if (f=true) then
      begin
             end
      end;
end.                                 
vedro-compota's picture

потеря функционала

s:=s+1;//но увеличиваем кол-во строк

и

s:=s-1;//но уменьшаем кол-во строк

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

program project911;
var z,s:integer;
  f:boolean;
begin
  s := 1;
  z := 0;
  f := false;
  if (z = s) then
    begin
    writeln();
    z := 0;
    if (f = false) then
      begin
           s:=s+1;
       end
    else if (f=true) then
         begin
            s:=s-1;
          end
    end;
end. 
vedro-compota's picture

форматирование

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

program project911;
var z,s:integer;
  f:boolean;
begin
  s := 1;
  z := 0;
  f := false;
  if (z = s) then
    writeln();
    z := 0;
    if (f = false) then
      s:=s+1
    else
      if (f=true) then
        s:=s-1;
end.