1. Упростим исходную логическую функцию Для удобства записи будем использовать общепринятые сокращения. Операцию логического сложения (дизъюнкцию) "∨" будем обозначать знаком "+". Логическое умножение (конъюнкцию) "∧" будем обозначать знаком умножения (точкой) или опускать, как принято в алгебре. Вместо знака логического отрицания будем использовать надчеркивание. 2. Переведем в двоичную систему счисления заданные значения A, B, C: 3. Построим таблицу истинности для функции у 4. Переведем результат в десятичную систему счисления
Type St = record iquo: integer; {целая часть} irem: integer; {числитель дроби} idiv: integer; {знаменатель дроби} end;
function iMax(i, j: integer): integer; begin if i > j then iMax := i else iMax := j end;
function iMin(i, j: integer): integer; begin if i < j then iMin := i else iMin := j end;
function FR(i, j, k: integer): St; var nmax, nmin: integer;
begin nmax := iMax(iMax(i, j), k); nmin := iMin(iMin(i, j), k); with Result do begin iquo := nmax div nmin; idiv := nmin; irem := nmax mod nmin end end;
var a, b, c: integer; r: St;
begin write('Введите через пробел три целых числа:'); readln(a, b, c); r := FR(a, b, c); writeln('Результат работы функции: ', r.iquo, ' целых и ', r.irem, '/', r.idiv) end.
Тестовое решение:
Введите через пробел три целых числа:343 253 37 Результат работы функции: 9 целых и 10/37
Для удобства записи будем использовать общепринятые сокращения. Операцию логического сложения (дизъюнкцию) "∨" будем обозначать знаком "+". Логическое умножение (конъюнкцию) "∧" будем обозначать знаком умножения (точкой) или опускать, как принято в алгебре. Вместо знака логического отрицания будем использовать надчеркивание.
2. Переведем в двоичную систему счисления заданные значения A, B, C:
3. Построим таблицу истинности для функции у
4. Переведем результат в десятичную систему счисления
St = record
iquo: integer; {целая часть}
irem: integer; {числитель дроби}
idiv: integer; {знаменатель дроби}
end;
function iMax(i, j: integer): integer;
begin
if i > j then iMax := i else iMax := j
end;
function iMin(i, j: integer): integer;
begin
if i < j then iMin := i else iMin := j
end;
function FR(i, j, k: integer): St;
var
nmax, nmin: integer;
begin
nmax := iMax(iMax(i, j), k);
nmin := iMin(iMin(i, j), k);
with Result do
begin
iquo := nmax div nmin;
idiv := nmin;
irem := nmax mod nmin
end
end;
var
a, b, c: integer;
r: St;
begin
write('Введите через пробел три целых числа:');
readln(a, b, c);
r := FR(a, b, c);
writeln('Результат работы функции: ', r.iquo, ' целых и ', r.irem, '/', r.idiv)
end.
Тестовое решение:
Введите через пробел три целых числа:343 253 37
Результат работы функции: 9 целых и 10/37