Булева алгебра

  • Автор темы novichok2
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

novichok2

Задача:
Определите в программе 4 логических переменных, которые содержат следующую информацию о людях:
married-"истина", если человек женат(замужем),
blond-"истина", если у человека светлые волосы,
male-"истина", если человек - мужчина,
emp-"истина", если человек работает.
Составьте логические выражения, с помощью которых можно определить, является ли человек:
1) замужней женщиной;
2)неженатым мужчиной;
3)незамужней блондинкой;
4)безработной незамужней женщиной.

program K;
var married,blond,male,emp,rez:boolean;
begin
married:=true;
blond:=true;
male:=true;
emp:=true;
rez:=married and not male;
writeln('Замужняя женщина-',rez);
rez:=not married and male;
writeln('Неженатый мужчина-',rez);
rez:=not married and not male and blond;
writeln('Незамужняя блондинка-',rez);
rez:=not emp and not married and not male;
writeln('Безработная незамужняя женщина-',rez);
readln
end.



Вопрос:
почему получается везде FALSE, ведь если "married and not male", то"замужем и не(not) мужчина". Но true and false=false(что и получается в итоге).
Или я не понимаю смысла алгебры логики? Объясните пожалуйста в чём проблема? :unsure:
 
P

Pasha

Для: novichok2
Код:
married and not male -> true and not true -> true and false -> false
not married and male -> not true and true -> false and true -> false
not married and not male and blond -> not true and not true and true -> false and false and true -> false
not emp and not married and not male -> not true and not true and not true -> false and false and false -> false.
А проблема в том, что эти 4 утверждения ложны для заданной у тебя "информации о человеке" - женатом работающем блондинистом мужике. Поменяй значения в 4-х строчках после begin, увидишь что результат изменится.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!