Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Операция xor в Паскале.

Jacob Coronel Ученик (30), на голосовании 10 лет назад
Известно, что нельзя записать (a>0) xor (b>0) xor (c>0), так как если все выражения истинны, то и результат будет истинным, а должно быть наоборот. Как записать это правильно? Заранее спасибо.
Дополнен 10 лет назад
Ничего получить не хочу, просто хочу понять это. Вот я привёл пример (a>0) xor (b>0) xor (c>0) - он неверен. Как, используя операцию xor можно записать вот это?
Дополнен 10 лет назад
Большое всем спасибо.
Дополнен 10 лет назад
Большое всем спасибо.
Голосование за лучший ответ
johnsilver Просветленный (22652) 10 лет назад
ты что получить то хочешь? напиши условие нормально.
это условие верное.
если все переменные равны 0, то будет фальш
если хотя бы 1 больше 0, то истина
если 2 больше 0 - фальш
если все 3, то истина.

0 0 0=False
0 0 1=True
0 1 0=True
1 0 0=True
0 1 1=False
1 0 1=False
1 1 0=False
1 1 1=True
Валерий Шестаков Просветленный (25528) 10 лет назад
не понятно, что такое "наоборот". составь таблицу истинности
a : b : c =
-----------
f : f : f = ?
f : f : t = ?
f : t : f = ?
f : t : t = ?
t : f : f = ?
t : f : t = ?
t : t : f = ?
t : t : t = ?

а математическую операцию или операторы паскаля мы уж под это дело подберем как-нибудь тебе
Pool Мастер (2487) 10 лет назад
думаю вы имели ввиду что
0 0 0 = 0
0 0 1 = 1
0 1 0 = 1
0 1 1 = 1
1 0 0 = 1
1 0 1 = 1
1 1 0 = 1
1 1 1 = 0
johnsilverПросветленный (22652) 10 лет назад
только таблица не верна.
Дмитрий Царь Мудрец (11461) 10 лет назад
XOR возвращает FALSE если значения равны (например TRUE xor TRUE = FALSE; FALSE xor FALSE = FALSE). Если значение НЕ равны, вернёт TRUE (TRUE xor FALSE = TRUE; FALSE xor TRUE = TRUE).
В твоём случае, с тремя условиями, он поделит условия на части. Оригинал выражения:
(a>0) xor (b>0) xor (c>0)
Предположим, что дали a, b и c булеановые значения (если a>0 то TRUE...). То есть выйдет такое:
a xor b xor c
Теперь посмотрим на выражение со значениями:
TRUE xor TRUE xor TRUE
Языки не могут выполнять сравнение сразу по всем критериям, они идут по порядку:
(a xor b) xor c
Здесь сначала выполняется проверка a xor b, а после чего, полученное значение сравнивается как (a xor b) xor c.
А теперь вернёмся к началу сообщения и посмотрим на принцип работы XOR.
У тебя есть TRUE xor TRUE xor TRUE. А если точнее, у тебя есть (TRUE xor TRUE) xor TRUE. Разберём по частям. Приравняю к x, чтоб было понятнее.
x:=(TRUE xor TRUE); // вернёт FALSE, т. к. значения одинаковы
x xor TRUE // со значениями выходит FALSE xor TRUE, а так как значения разные, возвращает TRUE
В итоге, если у тебя все три условия TRUE, у тебя и выйдет TRUE. Если же хоть одно условие равно FALSE, то вернёт FALSE. Если два условия равны FALSE, вернёт TRUE. Если три условия равны FALSE, вернёт FALSE.
Похожие вопросы