|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
|
Вычислить значение булевской формулы28.03.2014, 11:06. Показов 1720. Ответов 16
Метки нет (Все метки)
Доброго времени суток программисты!
не знаю как вы но задача поставленая мне , на мой взгляд весьма сложна...так как я только учусь программировать , тоесть еще не ориентируюсь в синтаксисе и логике , а когда получаю такие задания (как приведу ниже) , понимаю что я по сути то и вопроса не могу понять, уже не говоря о способе решения ))) Задача звучит - Вычислить значение булевской формулы, содержащей двоичные числа и знаки двоичных операций и не содержащей скобок. Реализовать следующие двоичные операции: ~ (отрицание), | (конъюнкция), & (дизъюнкция), ^ (сложение по модулю два). Не много погуглил , вроде как информация имеется, но для ее понимания необходимо углубляться, в том числе как я понял в асемблер (наткнулся по поиску на учебник на этом форуме, больше ничего не вышло по поиску) ... вообщем то я думаю что знать всего мне не нужно - нужно лишь понять смысл булевской формулы , что значит - не содержащей скобок , и разобраться в двоичных операциях ... и уже от сюда по тихоньку копать ... Ну как поможете?
0
|
|
| 28.03.2014, 11:06 | |
|
Ответы с готовыми решениями:
16
Вычислить значение формулы в постфиксной форме Используя Stack вычислить значение формулы |
|
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
|
|||
| 28.03.2014, 11:12 | |||
|
Добавлено через 1 минуту
0
|
|||
|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
|
| 28.03.2014, 11:14 [ТС] | |
|
Metall_Version, тоесть что бы все шло в определенной по умолчанию последовательности ? по типу - сперва умножение,сложение,вычитание ,деление? вы про это имели ввиду ... тоесть как бы 2+2*2 = 6 а не 8 потому что нету скобок ?
0
|
|
|
|
||
| 28.03.2014, 11:19 | ||
|
решение задачи сводится к разбору строки на элементарные операции, определение приоритета выполнения этих операций, ну и собственно последовательное выполнение согласно приоритетам
1
|
||
|
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
|
|
| 28.03.2014, 11:27 | |
|
0
|
|
|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
||||||
| 28.03.2014, 11:34 [ТС] | ||||||
|
nio,
ну хорошо , звучит вроде все просто, но в тоже время не понятно ))) думаю просто нужно начать ...
вот этот код - заполняет масив цифрами 1 и 0 в рандомном варианте, пользователь определяет количество цифр ... дальше что мне с этими цифрами делать?
0
|
||||||
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
| 28.03.2014, 13:11 | |
|
Пинок Под Зад, ищите по форуму Калькулятор и обратная польская запись.
вам следует создать самый обычный калькулятор только операции у него будут не обычные арифметические, а двоичные логические. а они в C# так же есть как и арифметические
1
|
|
|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
|
| 28.03.2014, 17:45 [ТС] | |
|
Learx, Мысль весьма интересна...прочитал на викепедии по этому поводу...сам смысл то вроде понятен...теперь выяснить как это реализовать в коде...да и разобраться с этими двоичными операциями
0
|
|
|
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
|
||
| 28.03.2014, 18:10 | ||
|
0
|
||
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
| 28.03.2014, 18:23 | |
|
Пинок Под Зад, говорю же искать по форуму - эта тема уже сто раз поднималась!
Metall_Version, аналогично. задач на СЧ на формуме овер дофига(простите за мой албанский)
0
|
|
|
0 / 0 / 0
Регистрация: 15.03.2014
Сообщений: 71
|
||
| 28.03.2014, 18:25 | ||
|
У меня все же впечатление, что, например, при передаче строки 10001011|10010111 должно выдаваться 10000011 тогда
К сожалению, у меня не самый изощренный ум в плане логики программы, так что что делать с операциями так сразу в голову не приходит. Может, так же массив токо структур из 3 полей( операция, ссылка на операнд1, ссылка на операнд2), выровненный по приоритету. Под конец сам процесс: Предложил бы бежать по массиву операций и менять операнды(так как скобок у нас нет, можно менять оба операнда на результат операции). Т.к. меняем по ссылке, в будущих операциях значения так же изменятся. Единственное. Я тоже начинающий, так что понятия не имею как это будет выглядеть в коде)
0
|
||
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
|
| 28.03.2014, 19:38 | |
|
Icerfog, обратная польская запись. и выравнивать ничего не надо
0
|
|
|
Master of Orion
|
|
| 28.03.2014, 20:11 | |
|
Пинок Под Зад, почитайте, что такое LL-парсер.
Добавлено через 2 минуты типичная реализация для калькулятора (перевод в ОПН): http://ru.wikipedia.org/wiki/%... 1%81%D1%8C из ОПН решение тривиально.
1
|
|
|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
|
| 28.03.2014, 23:10 [ТС] | |
|
Learx, не сомневаюсь в ваших знаниях...но действительно для меня все это ново...только учусь...потому прошу простить мой нубизм...наверняка все с этого начинали и тыкали кого то в прямой код носом...правда,я только тут не давно...
Добавлено через 4 минуты Psilon, сейчас ознакомлюсь. Добавлено через 10 минут Psilon, по LL-парсер.,не совсем понял, что это и как относится? По поводу ссылки на википедию, я уже прочитал ее с верху в низ до конца,но поясняю,сам смысл понятен,но пока что не могу придумать концепцую как это реализовать в код...да и впрчем в какой код...я только начинаю...
0
|
|
|
Master of Orion
|
||||||
| 29.03.2014, 00:46 | ||||||
|
Пинок Под Зад, у меня был неплохой калькулятор, но потом я начал его переделывать под "соответствие паттернам" и в итоге запорол, паттерны вообще зло, если их писать ради них самих.
Хотя вот код, который осуществляет перевод в обратную польскую нотацию. Вроде как даже работает:
1
|
||||||
|
1 / 1 / 1
Регистрация: 27.03.2014
Сообщений: 52
|
|
| 14.04.2014, 17:25 [ТС] | |
|
Господа!
В продолжение темы, вообщем то мне вдруг показалось что мы пошли в дебри...прочитав в сотый раз задание мне вдруг показалось что я понял вопрос и просветлело как реализовать ответ! рассказываю мое видение разбираю вопрос по кускам "Вычислить значение булевской формулы" тоесть вычислить истина или ложь в ответе - другими словами 1 или 0 "содержащей двоичные числа и знаки двоичных операций" тоесть содержит 1 или 0 и знаки двоичных операций (операции приведены ниже) "и не содержащей скобок" вот это не понятно , и я думаю что никто и не заметит если я этого не реализую - по моему замыслу пользователь сможет вводить только 0 или 1 без каких либо других знаков. "Реализовать следующие двоичные операции: ~ (отрицание)" тоесть юзер выбирает операцию отрицание - его просят ввести одну операнду - 1 или 0 , если он пишет 1 то в ответе получает 0 , если пишет 0 то в ответе получает 1 . тоесть ответ согласно таблицы истинности A ~A 0 1 1 0 " | (конъюнкция)" тут подобная ситуация, юзер выбирает операцию конъюнкция программа просит две операнды, юзер вводит и в ответ получает результат согласно таблицы истинности для конъюнкции A B A & B 0 0 0 0 1 1 1 0 1 1 1 1 "& (дизъюнкция)" тут собственно так же как и выше, только таблица истинности другая и соответственно результат A B A | B 0 0 0 0 1 0 1 0 0 1 1 1 "^ (сложение по модулю два)" Ну и тут программа попросит ввести три операнды, и выдаст ответ согласно таблицы X Y Z ^(X,Y,Z) 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 думаю усложнять не зачем...как считаете мои мысли адекватны?
0
|
|
|
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
|
||||||
| 14.04.2014, 18:47 | ||||||
|
Пинок Под Зад,
1) двоичные числа это не 0 и 1, а числа в двоичной СС совсем просто получить число в десятичной СС:
010010 & 11011 | ~01110 ^ 10110 легко находим на форуме парсер в обратную польскую запись(потратил всего 10 минут): https://www.cyberforum.ru/csha... ost1275998 и Калькулятор: сделать обратную польскую запись немного адаптируем его под себя(поставив свои знаки операций) 3. собственно я уже за тебя сделал 99%. может, приложишь усилие и сделаешь оставшийся 1% ??? Добавлено через 6 минут P.S. ОПЗ вычисляется гораздо проще: 1. храним в виде стека(не переводим в строку) 2. извлекаем элемент - если операнд, то сохраняем в стек операндов выполнив Convert 3. если операция, то извлекаем из стека операндов один(для ~)-два операнда(для других) и сохраняем в стек операндов результат операции 4. по окончанию стека ОПЗ в стеке операндов содержится единственный элемент-результат
0
|
||||||
| 14.04.2014, 18:47 | |
|
Помогаю со студенческими работами здесь
17
Вычислить для каждой из матриц значение формулы Вычислить значение формулы при действительных значениях всех переменных Вычислить значение формулы при действительных значениях всех переменных... Булевской переменной Flag присвоить значение True если значения переменных X равны Вычислить значение формулы: x=(a*2+b*c)/(d-3) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|