Задача 12 Урок 9

http://fkn.ktu10.com/?q=node/8539

Изучите код:

var s:integer;
    f:boolean;
begin
  f := true;
  b := false;
  if (f=true) then
    s:=1;
  else
    s:=2;
  if (b=false) then
    s:=3;
  else
    s:=4;
end.

-- блоки условий можно переписать более кратко, без использования сравнения = true или = false, с сохранением той же логики работы программы.

var s: integer;
    f: boolean;
    b: boolean;
begin
  f := true;
  b := false;
  if(((f = true) and (b = true)) or ((f = false) and (b = true))) then
    s := 4
  else
    s := 3;
end.      
vedro-compota's picture

считаем что исходный код такой (условие обновлено):

<pre class="brush: delphi">var s, t:integer;
    f, b:boolean;
begin
  f := true;
  b := false;

  if (f=true) then
    t:=1;
  else
    t:=2;

  if (b=false) then
    s:=3;
  else
    s:=4;
end. </pre> 

По варианту решения:
1) куда исчезли s:=1; и s:=2; ?
2) сравнение с true и false для boolean не нужно (см. примечания к задаче)

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

s:=3;
t:=1; Вроде как точка запятая не нужны.

var s, t:integer;
f, b:boolean;
begin
  f := true;
  b := false;
  if (f) then
    t:=1
  else
    t:=2;
  if (b) then
    s:=3
  else
    s:=4;
end.    
vedro-compota's picture

if (b) then
    s:=3
  else
    s:=4;

-- работает отлично от исходного кода

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

var s, t:integer;
f, b:boolean;
begin
  f := true;
  b := false;
  if (f) then
    t:=1
  else
    t:=2;
  if (not b) then
    s:=3
  else
    s:=4;
end. 
vedro-compota's picture

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

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