Форум программистов, компьютерный форум CyberForum.ru

Законы Моргана - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
03.03.2010, 19:10     Законы Моргана #1
У Дейтлов есть задачка

Не пойму, как !(условие1 && условие2) может быть эквивалентно (!условие1 || !условие2)? Первое сбудется, если и условие1, и условие2 не заданы. А второе, если не задано либо усл.1, либо усл.2. И со вторым та же история.
Миниатюры
Законы Моргана  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
03.03.2010, 19:23     Законы Моргана #2
тренируйте логику.
!(условие1 && условие2) возвращает истину если
не выполнились условия 1 или 2, т.е. не выполнилось либо 1е либо 2е, либо оба.
откуда следует эквивалентность выражений
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.03.2010, 19:25     Законы Моргана #3
fs444, пусть условие1 и условие2 истинны, т.е. равны true.
Получаем:
!(true && true) = !(true) = false
(!true|| !true) = (false || false) = false

Пусть теперь оба условия ложны, т.е. равны false.
Получаем:
!(false && false) = !(false) = true
(!false || !false) = (true || true) = true

Пусть теперь условие1 истинно, а условие2 ложно.
Получаем:
!(true && false) = !(false) = true
(!true || !false) = (false || true) = true


Как мы видим, во всех трех случаях выражения !(условие1 && условие2) и (!условие1 || !условие2) эквивалентны.

А вообще, как мне кажется, закон Моргана не стоит того, чтобы его знать программисту, мало вероятно что тебе он когда-нибудь понадобиться.
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
03.03.2010, 19:43  [ТС]     Законы Моргана #4
тренируйте логику


пусть условие1 и условие2 истинны, т.е. равны true.
Получаем:
!(true && true) = !(true) = false
(!true|| !true) = (false || false) = false
Пусть теперь оба условия ложны, т.е. равны false.
Получаем:
!(false && false) = !(false) = true
(!false || !false) = (true || true) = true
Пусть теперь условие1 истинно, а условие2 ложно.
Получаем:
!(true && false) = !(false) = true
(!true || !false) = (false || true) = true
Ну да, точно

закон Моргана не стоит того, чтобы его знать программисту
Возможно. Наверное, Дейтлы просто решили, что выполнить его полезно для развития определенного образа мышления.
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
15.03.2010, 23:00  [ТС]     Законы Моргана #5
С помощью ваших подсказок решил приведенные Дейтлами уравнения так:
!(условие1 && условие2) == (!условие1 || !условие2)
!(условие1 || условие2) == (!условие1 && !условие2)

а) !(x < 5) && !(y >= 7) == !((x < 5) || (y >= 7))
б) !(a == b) || !(g != 5) == !((a == b) && (g != 5))
в) !((x <= 8) && (y > 4)) == (!(x <= 8) || !(y > 4))
г) !((i > 4) || (j <= 6)) == (!(i > 4) && !((j <= 6)))
Далее написано, что надо написать программу, которая показала бы эквивалентность первоначальных и новых выражений. Это, я так понимаю, надо ввести в нее значения х, у и других букв, а потом вывести что то вроде
При х = 3 и у = 5 (x < 5) = true, (y >= 7) = false.
!(x < 5) && !(y >= 7) = !true && !false = false && true = false
!((x < 5) || (y >= 7)) = !(true || false) = !true = false
Да?
Yandex
Объявления
15.03.2010, 23:00     Законы Моргана
Ответ Создать тему
Опции темы

Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru