powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обработка логических условий.
24 сообщений из 49, страница 2 из 2
Обработка логических условий.
    #39182986
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю.
если сделаешь парсинг - что будет результатом его работы?
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183257
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offtopjenya7чего я на форум за помощью пришел

Насколько я понимаю, ты ДОЛЖЕН БЫЛ прийти за идеями. Но всё больше кажется, что пришёл ты за кодом для кнопки "Сделать песдато".
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183331
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю.
если сделаешь парсинг - что будет результатом его работы?
у меня в моем первом посте все разложено по полочкам. в том числе и результат работы. более подробно я объяснить не могу.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183335
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
offtopjenya7чего я на форум за помощью пришел

Насколько я понимаю, ты ДОЛЖЕН БЫЛ прийти за идеями. Но всё больше кажется, что пришёл ты за кодом для кнопки "Сделать песдато".
идей у меня тоже - громадьё. хотелось бы рабочую реализацию.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183401
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7у меня в моем первом посте все разложено по полочкам. в том числе и результат работы.
вроде не устраивает такая структура?

значит в виде дерева получить результат синтаксического анализа нужно , идей то - громадьё )
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183590
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7у меня в моем первом посте все разложено по полочкам. в том числе и результат работы.
вроде не устраивает такая структура?

значит в виде дерева получить результат синтаксического анализа нужно , идей то - громадьё )

структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами.
(A1 OR A2 AMD A3) AND (B1 OR B2 OR B3)
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183597
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами.
(A1 OR A2 AMD A3) AND (B1 OR B2 OR B3)
структура - негодная, изобрази выражение в виде дерева
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183630
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами.
(A1 OR A2 AMD A3) AND (B1 OR B2 OR B3)
структура - негодная, изобрази выражение в виде дерева
а как это выражается в коде?
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183631
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если полноценное дерево (или польскую нотацию) не хочешь делать - делай два уровня:
1. элементы (как сейчас)
2. группы элементов (п.1.)
в итоге будет массив массивов:
a[0] = (A1 OR A2 AMD A3)
a[1] = (B1 OR B2 OR B3)
считаешь сначала a[0] затем a[1] затем AND посчитанного.

PS но это плохой велосипед, т.к. сюда не впишется (A1 OR (A2 AND A3)) AND (B1 OR B2 OR B3)
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183645
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет.
Правила как в алгебре: AND это умножение, OR сложение, например
Код: sql
1.
2.
(A and B) or C = A and B or C
(A or B) and C = A and C or B and C



PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND .
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183650
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TЕсли полноценное дерево (или польскую нотацию) не хочешь делать - делай два уровня:
1. элементы (как сейчас)
2. группы элементов (п.1.)
в итоге будет массив массивов:
a[0] = (A1 OR A2 AMD A3)
a[1] = (B1 OR B2 OR B3)
считаешь сначала a[0] затем a[1] затем AND посчитанного.

PS но это плохой велосипед, т.к. сюда не впишется (A1 OR (A2 AND A3)) AND (B1 OR B2 OR B3)
ну почему
A1 – group #1
A2,A3 – group #2
B1,B2,B3 - group #3
мне придется вводить еще одну структуру которая будет содержать группы и логические элементы между ними. получается громоздко.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183656
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TМожешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет.
Правила как в алгебре: AND это умножение, OR сложение, например
Код: sql
1.
2.
(A and B) or C = A and B or C
(A or B) and C = A and C or B and C



PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND .

это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183668
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7а как это выражается в коде?
например, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
enum OP{
	lit,
	get,
	let,
	call,
	lt,
	gt,
	eq,
	ne,
	le,
	ge,
	add,
	sub,
	mul,
	div
};
struct NODE{
	enum OP op;
	NODE * left;
	NODE * right;
	int32_t value;
};
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183783
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя.
Это тоже корявый велосипед плавно везущий к нормальному решению. В Обратной польской записи прекрасно расписано как распарсить.

Если у тебя задача "как бы так написать чтобы ничего особо не менять в уже написанном", то могу еще велосипед предложить:
заведи справочник формул:
Код: sql
1.
2.
3.
4.
1. (A1 OR A2 AMD A3)
2. (A1 OR A2 OR A3)
3. (A1 OR A2 AMD A3) AND (B1 OR B2 OR B3)
... и т.д. все возможные варианты


я так понимаю вариантов у тебя немного ожидается.

Дальше прописываешь распознавание какую из формул ввел пользователь, запоминаешь все параметры и номер формулы. Для каждой формулы прописываешь свой код расчета.

Как и в других корявых решениях - корявость в ограниченном количестве обрабатываемых выражений.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183808
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tjenya7это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя.
Это тоже корявый велосипед плавно везущий к нормальному решению. В Обратной польской записи прекрасно расписано как распарсить.

Если у тебя задача "как бы так написать чтобы ничего особо не менять в уже написанном", то могу еще велосипед предложить:
заведи справочник формул:
Код: sql
1.
2.
3.
4.
1. (A1 OR A2 AMD A3)
2. (A1 OR A2 OR A3)
3. (A1 OR A2 AMD A3) AND (B1 OR B2 OR B3)
... и т.д. все возможные варианты


я так понимаю вариантов у тебя немного ожидается.

Дальше прописываешь распознавание какую из формул ввел пользователь, запоминаешь все параметры и номер формулы. Для каждой формулы прописываешь свой код расчета.

Как и в других корявых решениях - корявость в ограниченном количестве обрабатываемых выражений.

ха. пользователь может ввести любую логическую комбинацию. я не знаю что ему захочется съэндить или съорить. вот сижу с польской записью разбираюсь. тот еще бубен. :)
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183816
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7ха. пользователь может ввести любую логическую комбинацию
тебя предупреждали.
простой, но полноценный синтаксический анализатор нужен.
а перед написанием анализатора - с языком определиться нужно
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183926
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилjenya7ха. пользователь может ввести любую логическую комбинацию
тебя предупреждали.
простой, но полноценный синтаксический анализатор нужен.
а перед написанием анализатора - с языком определиться нужно
разобрать лексером на токены не проблема. вот как потом токены обрабатывать.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183954
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7разобрать лексером на токены не проблема. вот как потом токены обрабатывать.
Гугл сломался?

Вот например
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39183962
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7разобрать лексером на токены не проблема. вот как потом токены обрабатывать.
синтаксическим анализатором
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39184571
Доктар123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TМожешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет.
Правила как в алгебре: AND это умножение, OR сложение, например
Код: sql
1.
2.
(A and B) or C = A and B or C
(A or B) and C = A and C or B and C



PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND .

Правильно,
приоритеты соотвествуют математическим
AND - умножене- деление
OR - сложение- вычитаение.

Что касается разбора конструкций внутри скобок,
то их нужно завернуть в рекурсию.
Уровень рекурсии будут соотвесвовать уровню вложенности скобок.

По реализации на С :
двигаешь указатель по строке , встретил открывающуюся
скобку впрыгнул в рекурсивный вызов, встретил закрывающуюся
выпрыгнул на уровень выше.
И будет вам выше предложенное дерево....
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39184578
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доктар123,

рекурсивный спуск называется
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39184590
Доктар123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИзопропилДоктар123,

рекурсивный спуск называется

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

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

В польской нотации алгоритм проще реализуется
меньше переменных и расход памяти, но суть алгоритма не меняется.
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39184600
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доктар123А польская нотация нужна , что бы не запрыгивать
наперед указателя строки
наверное пора снова учебник в руки взять.....
...
Рейтинг: 0 / 0
Обработка логических условий.
    #39192156
Мудроглюков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

можешь попробовать Prolog (без перекомпиляции - добавляешь и убираешь разные условия в любых количествах, отслеживая лишь логику)
например, SWI-Prolog с C
...
Рейтинг: 0 / 0
24 сообщений из 49, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Обработка логических условий.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]