|
|
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю. если сделаешь парсинг - что будет результатом его работы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:22 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
offtopjenya7чего я на форум за помощью пришел Насколько я понимаю, ты ДОЛЖЕН БЫЛ прийти за идеями. Но всё больше кажется, что пришёл ты за кодом для кнопки "Сделать песдато". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 09:20 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю. если сделаешь парсинг - что будет результатом его работы? у меня в моем первом посте все разложено по полочкам. в том числе и результат работы. более подробно я объяснить не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 10:31 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akina offtopjenya7чего я на форум за помощью пришел Насколько я понимаю, ты ДОЛЖЕН БЫЛ прийти за идеями. Но всё больше кажется, что пришёл ты за кодом для кнопки "Сделать песдато". идей у меня тоже - громадьё. хотелось бы рабочую реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 10:33 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7у меня в моем первом посте все разложено по полочкам. в том числе и результат работы. вроде не устраивает такая структура? значит в виде дерева получить результат синтаксического анализа нужно , идей то - громадьё ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 11:09 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7у меня в моем первом посте все разложено по полочкам. в том числе и результат работы. вроде не устраивает такая структура? значит в виде дерева получить результат синтаксического анализа нужно , идей то - громадьё ) структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами. (A1 OR A2 AMD A3) AND (B1 OR B2 OR B3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 12:44 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами. (A1 OR A2 AMD A3) AND (B1 OR B2 OR B3) структура - негодная, изобрази выражение в виде дерева ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 12:48 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7структура вполне себе. если добавить к ней член group_number то можно уже группировать в соответствии со скобками. единственно что непонятно - как обрабатывать логический элемент между группами. (A1 OR A2 AMD A3) AND (B1 OR B2 OR B3) структура - негодная, изобрази выражение в виде дерева а как это выражается в коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Если полноценное дерево (или польскую нотацию) не хочешь делать - делай два уровня: 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Можешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет. Правила как в алгебре: AND это умножение, OR сложение, например Код: sql 1. 2. PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:13 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
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 мне придется вводить еще одну структуру которая будет содержать группы и логические элементы между ними. получается громоздко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:13 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima TМожешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет. Правила как в алгебре: AND это умножение, OR сложение, например Код: sql 1. 2. PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND . это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:18 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7а как это выражается в коде? например, так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 13:23 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя. Это тоже корявый велосипед плавно везущий к нормальному решению. В Обратной польской записи прекрасно расписано как распарсить. Если у тебя задача "как бы так написать чтобы ничего особо не менять в уже написанном", то могу еще велосипед предложить: заведи справочник формул: Код: sql 1. 2. 3. 4. я так понимаю вариантов у тебя немного ожидается. Дальше прописываешь распознавание какую из формул ввел пользователь, запоминаешь все параметры и номер формулы. Для каждой формулы прописываешь свой код расчета. Как и в других корявых решениях - корявость в ограниченном количестве обрабатываемых выражений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 14:37 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7это таки интересно. надо придумать как раскрывать скобки програмно. это все таки строка от пользователя. Это тоже корявый велосипед плавно везущий к нормальному решению. В Обратной польской записи прекрасно расписано как распарсить. Если у тебя задача "как бы так написать чтобы ничего особо не менять в уже написанном", то могу еще велосипед предложить: заведи справочник формул: Код: sql 1. 2. 3. 4. я так понимаю вариантов у тебя немного ожидается. Дальше прописываешь распознавание какую из формул ввел пользователь, запоминаешь все параметры и номер формулы. Для каждой формулы прописываешь свой код расчета. Как и в других корявых решениях - корявость в ограниченном количестве обрабатываемых выражений. ха. пользователь может ввести любую логическую комбинацию. я не знаю что ему захочется съэндить или съорить. вот сижу с польской записью разбираюсь. тот еще бубен. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 14:50 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7ха. пользователь может ввести любую логическую комбинацию тебя предупреждали. простой, но полноценный синтаксический анализатор нужен. а перед написанием анализатора - с языком определиться нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 14:56 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7ха. пользователь может ввести любую логическую комбинацию тебя предупреждали. простой, но полноценный синтаксический анализатор нужен. а перед написанием анализатора - с языком определиться нужно разобрать лексером на токены не проблема. вот как потом токены обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 15:57 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7разобрать лексером на токены не проблема. вот как потом токены обрабатывать. Гугл сломался? Вот например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 16:09 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7разобрать лексером на токены не проблема. вот как потом токены обрабатывать. синтаксическим анализатором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2016, 16:14 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima TМожешь попробовать скобки раскрыть. Тогда в твою структуру все ляжет. Правила как в алгебре: AND это умножение, OR сложение, например Код: sql 1. 2. PS у тебя косяк в первом посте, AND и OR имеют одинаковый приоритет, сначала должны выполнится все AND . Правильно, приоритеты соотвествуют математическим AND - умножене- деление OR - сложение- вычитаение. Что касается разбора конструкций внутри скобок, то их нужно завернуть в рекурсию. Уровень рекурсии будут соотвесвовать уровню вложенности скобок. По реализации на С : двигаешь указатель по строке , встретил открывающуюся скобку впрыгнул в рекурсивный вызов, встретил закрывающуюся выпрыгнул на уровень выше. И будет вам выше предложенное дерево.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:07 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Доктар123, рекурсивный спуск называется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:14 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
ИзопропилДоктар123, рекурсивный спуск называется Я уже не помню как это в учебнике называется.... Приоретизация сложения и умножения делается также. А польская нотация нужна , что бы не запрыгивать наперед указателя строки , что бы посмотреть нужна ли следующая итерация рекурсии или операция выполняется на текущем уровне вложенности. В польской нотации алгоритм проще реализуется меньше переменных и расход памяти, но суть алгоритма не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:26 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Доктар123А польская нотация нужна , что бы не запрыгивать наперед указателя строки наверное пора снова учебник в руки взять..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2016, 11:30 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39183668&tid=1340769]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
133ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 393ms |

| 0 / 0 |
