Прочерк означает здесь "неважно", т.е. допускаются и 0, и 1.
Решение. Определение функции
можно переписать в следующем виде
Это немедленно приводит нас к следующей программе:
module ТаблицаРешений1;
var X,Y,Z : integer;
begin
read(X,Y,Z); write(' f(', X:1,', ', Y:1, ',', Z:1,')=');
if (X = 1) and (Z = 0) then
writeln('A')
elsif (X = 0) and (Y = 1) then
writeln('B')
elsif (Y = 0) and ((X = 0) or
(Z = 1)) then writeln('C')
else writeln('D')
end
end ТаблицаРешений1.
В худшем случае, при = 1, при выполнении данной программы будет сделано семь проверок на равенство. Для построения более эффективной программы запишем определение функции несколько другим способом:
где
где
Такое определение приводит нас к другой программе:
module ТаблицаРешений2;
var X,Y,Z : Integer;
begin read(X,Y,Z); write(' f(', X:1, ', ', Y:1, ',',', Z:1,')=
');
if X = 0
then (**)
if Y = 0
then (**)
writeln('C')
else(*
*) writeln('B')
end
elseif(**)
Z
= 0 then(**)
writeln('A')
elseif (*{X = 1, Z = 1}*) Y = 0
then(**)
writeln('C')
else(**)
writeln('D')
end
end ТаблицаРешений2.
Эта программа в худшем случае, при ,
выполняет всего лишь три сравнения.
Next:3.2.4
Анализ квадратного уравнения
Up:3.2
Построение ветвящихся программ
Previous:3.2.2
Максимум из трех