Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52

Построить таблицу истинности по логическому выражению

03.06.2015, 23:07. Показов 4471. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
дано логическое выражение (A+B)->(A*A)+(!D*R)->(!B*!B)+A. Упростить его и вывести его таблицу истинности
Как я представляю решение:
- исходная формула
- сокращение 1
- сокращение 2
- сокращенная формула
- нажмите пробел чтобы вывести таблицу истинности
- таблица истинности
Помогите пожалуйста написать код
P.S. Объяснения препода
нужно ли выводить сразу таблицу истинности для готового логического выражения?
- нужно вводить упрощённое руками выражение и программа сама формирует эту таблицу
Не получится ли такой калькулятор для вычисления логич. выражений
- калькулятор не нужен, упростить необходимо "вручную", а потом вбить получившееся выражение в программе.
В случае калькулятора пользователь может ввести любую функцию в предлагаемый ему интерфейс, а в программе нужно будет это функцию разобрать (распарсить) и уметь вычислять.
Я же вам говорю что саму функцию (например, f(bool x, bool y,...)) вы можете задать в программе.
Т.е. на входе не текстовое описание "f(x,y,z)= x || y || z", а описание этой функции на выбранном языке программирования.
Задача - вычислить и вывести значения этой функции для всевозможных значений её параметров, т.е. таблицу истинности.
Миниатюры
Построить таблицу истинности по логическому выражению  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2015, 23:07
Ответы с готовыми решениями:

Построить таблицу истинности, используя 0 и 1
построить таблицу истинности,используя 0 и 1 (X\vee Y\rightarrow X\vee Z)\rightarrow (Y\rightarrow Z)=\bar{X\wedge Z}

Построить таблицу истинности для логической функции
Здравствуйте, помогите пожалуста решить задачку (обычный Паскаль) Построить таблицу истинности для логической функции: ...

Нужно построить таблицу истинности по заданном логическому выражению.
Нужно построить таблицу истинности по заданном логическому выражению. Но суть не в этом, а в том, что в конце программы выводится массив не...

10
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.06.2015, 09:48
Цитата Сообщение от grobnar93 Посмотреть сообщение
упростить необходимо "вручную", а потом вбить получившееся выражение в программе.
Ну так Вы упростили эту функцию? Или ждёте помощь из математического раздела данного форума?
0
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52
04.06.2015, 10:07  [ТС]
APALoff, Конечно.
Выкладываю упрощение выражения:
(A+B)->(A*A)+(!D*R)->(!B*!B)+A
A+B->!DR+AA->!B!B+A
A+B->!DR+A->!B+A
!DR+(!A+!B)+A->!B+A
!A!B+!DR+A->!B+A
!DR+!B+A->!B+A
!(!DR+!B+A)+!B+A
!(!B+!A)!DR+!B+A
!D!R!B!A+!B+A
!DRB+!B+A (опускаю некоторые упрощения)
!D+!B+R+A
Итого : !B+!R+A+D
0
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.06.2015, 10:23
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function F(aa,bb,cc,dd : Boolean) : Boolean;
Begin
  F:=(not aa) or (not bb) or cc or dd;
end;
 
Var B,R,A,D : Boolean;
Begin
  Writeln('A B D R Func');
  For B:=False to True do
   For R:=False to True do
    For A:=False to True do
     For D:=False to True do
       Writeln(Ord(A),' ',Ord(B),' ',Ord(D),' ',Ord(R),'  ',Ord(F(b,r,a,d)));
end.
Судя по результату, либо я что-то неправильно сделал, либо Вы не до конца сократили свою формулу.
0
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52
04.06.2015, 10:35  [ТС]
APALoff, Давайте сравнив результаты:
в приложении картинки с упрощением
Миниатюры
Построить таблицу истинности по логическому выражению   Построить таблицу истинности по логическому выражению  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,863
Записей в блоге: 12
04.06.2015, 10:38
Карта Карно показала, что упрощенная функция = https://www.cyberforum.ru/cgi-bin/latex.cgi?A \vee \bar{B}\bar{D}R
1
 Аватар для APALoff
1648 / 1077 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
04.06.2015, 10:44
grobnar93, я логику сдавал уже много лет назад... конечно, я мог бы вспомнить как пользоваться картами Карно, но честно, мне лениво. Поэтому я без проверки доверяю Вашим выводам в упрощении формулы, хотя и вижу по результату, что можно еще лучше сократить.

Добавлено через 3 минуты
Для варианта volvo :
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function F(aa,bb,cc,dd : Boolean) : Boolean;
Begin
  F:=aa or (not bb) and (not cc) and dd;
end;
 
Var B,R,A,D : Boolean;
Begin
  Writeln('A B D R Func');
  For A:=False to True do
   For B:=False to True do
    For D:=False to True do
     For R:=False to True do
       Writeln(Ord(A),' ',Ord(B),' ',Ord(D),' ',Ord(R),'  ',Ord(F(b,r,a,d)));
end.
Добавлено через 52 секунды
Результат:
Кликните здесь для просмотра всего текста
A B D R Func
0 0 0 0 0
0 0 0 1 0
0 0 1 0 1
0 0 1 1 0
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33187 / 21484 / 8232
Регистрация: 22.10.2011
Сообщений: 36,863
Записей в блоге: 12
04.06.2015, 10:47
Неправильно. Ты попутал местами все переменные:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function F(aa,bb,dd,rr : Boolean) : Boolean;
Begin
  F:=(aa) or (rr and not dd and not bb)
end;
 
Var B,R,A,D : Boolean;
Begin
  Writeln('A B D R Func');
  For A:=False to True do
   For B:=False to True do
    For D:=False to True do
     For R:=False to True do
       Writeln(Ord(A),' ',Ord(B),' ',Ord(D),' ',Ord(R),'  ',Ord(F(a,b,d,r)));
end.
Результат:
Кликните здесь для просмотра всего текста
A B D R Func
0 0 0 0 0
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 1
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
1
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52
04.06.2015, 10:53  [ТС]
APALoff, Я уверен в своем упрощении, но я еще раз проверю таблицу истинности,упрощение и карту карно (в приложении)
Миниатюры
Построить таблицу истинности по логическому выражению   Построить таблицу истинности по логическому выражению   Построить таблицу истинности по логическому выражению  

0
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52
04.06.2015, 12:28  [ТС]
volvo, APALoff, такая просьба. Могли бы вы вывести все столбцы в таблице истинности а не 4 переменные и конечное выражение?
0
1 / 1 / 0
Регистрация: 02.03.2015
Сообщений: 52
04.06.2015, 13:56  [ТС]
Вывел все значения для конечной формулы
Вопросы:
1. таблица растянулась на полэкрана в длину. Как ее сократить?
2. Может все дело в формуле F:= ? и ее стоит написать так F:=(not aa) or (not bb) or cc or dd или (not bb) or (not cc) or dd or aa.
3. что дают эти двойные буквы?
Код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
program laba2;
uses crt;
 
Function F(aa,bb,cc,dd : Boolean) : Boolean;
Begin
  F:=aa or (not bb) and (not cc) and dd;
end;
 
Var B,R,A,D,z,y,x,w : Boolean;
Begin
writeln('Исходное логическое выражение');
writeln('(A+B)->(A*A)+(!D*R)->(!B*!B)+A');
writeln('Скоращение логического выражения');
          begin
          writeln('A v B → !DR v AA → !B!B v A');
          writeln('A v B → !DR v A → !B!B v A');
          writeln('(!B v !DR v A) → !B!B v A');
          writeln('(!B v !DR v A)→!B v A');
          writeln('!B v !R v D v A');
          end;
          writeln();
writeln('Таблица истинности логического выражения');          
 Writeln('A B D R !B !R !Bv!R !Bv!RvD Func');
 z:= not B;
 y:= not R;
 x:= not B and not R;
 w:= not B and not R and D;
  For A:=False to True do
   For B:=False to True do
    For D:=False to True do
     For z:=false to true do
      For y:=false to true do
       For x:=false to true do
        For w:=false to true do 
         For R:=False to True do
          Writeln(Ord(A),' ',Ord(B),' ',Ord(D),' ',Ord(R),'  ',Ord(z),'  ',Ord(y),'   ',Ord(x),'     ',Ord(w),'     ',Ord(F(b,r,a,d)));
 
end.
P.S. таблица истинности была неправильная для конечного упрощенного выражения.
Миниатюры
Построить таблицу истинности по логическому выражению  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2015, 13:56
Помогаю со студенческими работами здесь

Построить по булевому выражению таблицу истинности и логическую схему
Правила, п. 5.18

Синтезировать в базисе И - НЕ схему, соответствующую логическому выражению
Доброго времени суток. Помогите пожалуйста решить. Спасибо

Поиск значения соответствующее логическому выражению в массиве
Здравствуйте. Есть таблица с прайс-листом и есть столбец со значением продукта необходимо определить его цену. Если бы в прайс листе были...

Построить таблицу истинности
Построить таблицу истинности A)-(q\rightarrow p)\rightarrow q B)-(p\rightarrow q)\rightarrow -(q)

Построить таблицу истинности.
есть три множества букв к примеру П { а, в, е, к, р, т} И {а, д, е, к, л, н, р,с} О{ а, в, е, и, л, н, о, т, ч} Универсумом для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru