![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
задача такаяисходная информация:строка содержащая булевскую функцию от переменных А,В....,приведенную к нормальной совершенной форме.
задание:вывести таблицу истинности этой функции. указание:количество переменных и их обозначения должны определяться программно. подскажите кто может ![]() и если можите подскажите еще алгоритм решения.спасибо! ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата 1)как выглядит функция в нормальной совершенной форме? См. здесь: Википедия: Дизъюнктивная нормальная форма (ДНФ) и ниже... Цитата что значит количество переменных и их обозначения должны определяться программно. Это значит, что ты не должен говорить программе, сколько переменных у тебя будет использоваться, а программа должна работать с произвольной строкой, и сама определять, является ли введенная строка СДНФ или СКНФ. Ну, к примеру, при вводе:'AB\C+A\B\C' программа должна будет определить, что выражение состоит из трех переменных, а в случае: 'A\B+\AB' - из двух, и соответственно этому строить таблицу... Кстати, задачка-то уже решалась на форуме: переход от ДНФ к табличному виду (но сначала все-таки попробуй решить ее сам) + к этому, на форуме есть еще по крайней мере 2 задачи (связанные с упрощением логических функций), которые тебе тоже будет полезно разобрать... Вот одна из них: Булевские ф-ции Вторую с ходу найти не могу, как найду - дам ссылку... |
blackhard |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
См. здесь: Википедия: Дизъюнктивная нормальная форма (ДНФ) и ниже... Это значит, что ты не должен говорить программе, сколько переменных у тебя будет использоваться, а программа должна работать с произвольной строкой, и сама определять, является ли введенная строка СДНФ или СКНФ. Ну, к примеру, при вводе: 'AB\C+A\B\C' программа должна будет определить, что выражение состоит из трех переменных, а в случае: 'A\B+\AB' - из двух, и соответственно этому строить таблицу... Кстати, задачка-то уже решалась на форуме: переход от ДНФ к табличному виду (но сначала все-таки попробуй решить ее сам) + к этому, на форуме есть еще по крайней мере 2 задачи (связанные с упрощением логических функций), которые тебе тоже будет полезно разобрать... Вот одна из них: Булевские ф-ции Вторую с ходу найти не могу, как найду - дам ссылку... спасибо ![]() |
blackhard |
![]()
Сообщение
#4
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
function fromdec(n, radix: longint): string; может кто поможет разобраться с этой прогой!? ![]() ![]() ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата тут она работает с заданной функцией а мне бы надо чтоб функцию вводить с клавиатуры Функция задана в переменной (ну, типизированной константе, неважно, она себя все равно ведет как переменная) s, так что для того чтобы задать свою функцию, надо просто ввести ее первой строкой основной программы:begin Цитата я чето не могу допиреть как тут че работает сильно жестоко для меня а я в этом деле новичек Задание-то не очень подходящее для новичка, так что придется тебе разобраться ![]() Где именно непонятно, что делается? |
blackhard |
![]()
Сообщение
#6
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Функция задана в переменной (ну, типизированной константе, неважно, она себя все равно ведет как переменная) s, так что для того чтобы задать свою функцию, надо просто ввести ее первой строкой основной программы: begin Задание-то не очень подходящее для новичка, так что придется тебе разобраться ![]() Где именно непонятно, что делается? мнеб вначале понять по какому принципу она вообще составляет таблици истинности например я ввожу функцию A*B*C+\A*\B*C и выдается вот эта таблица 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 и мне кажется что это неверно ![]() |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Ну, начнем с того, что ты выбрал не совсем подходящую тебе программу. Что делает скопированный тобой код (кстати, надо было сначала разобраться, а потом говорить что-то о правильности!) - описано в посте №1 той же темы: переход от ДНФ к табличному виду
(см. таблицу №2 там) Тебе же нужно не табличное представление (которое напрямую может использоваться для минимизации методом Карно), а таблица истинности - это совсем разные вещи. Я привел тебе ссылку для примера, КАК ВООБЩЕ работать с подобными заданиями, ты же почему-то решил, что это - написанная именно по твоему заданию "под ключ" программа, которую достаточно просто взять и сдать... Этого не будет. Я "под ключ" теперь программы не пишу. Сообщение отредактировано: volvo - 11.11.2007 21:31 |
blackhard |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
да теперь всепонятно.
вот это как я понимаю задается сама таблица tmatrix = array[0 .. 3, 0 .. 3] of 0 .. 1; ну а если у меня будет функция допустим А*/В ли другая то выходит что в таблице должно быть 4 строки можно както сделать чтобы массив задавался уже исходя из входных данных? |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 20:24 |