|
|
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Пишу в С под микроконтроллер. я хочу выполнять разные задачи в камне. скажем включи вентилятор после 17:00 если температура больше 30* C и выключи его после 22:00 или если температура упала ниже 27* C. я бы мог записать в терминале. Код: plaintext 1. 2. это легко распарсить в структуру и потом проверить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. и потом заполнить (это псевдо код чтоб не усложнять. в реале немного подругому.) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. и потом для условия time >= 17:00 AND temp > 30 out1 = 1 Код: plaintext 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. ну и похожим образом для второго условия. но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот тут я впал в ступор - time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 как хранить и обрабатывать логические группы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 10:55 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. Что будет при таких данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:32 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima T Код: sql 1. 2. Что будет при таких данных? мда. вопрос поставлен верно. тут наверно надо выставлять границы time>17:00 and time<18:00 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:37 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Храни в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:50 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7как хранить и обрабатывать логические группы? Начать можно с подхода "по-дилетантски". Снять нагрузку с парсера и переложить её на оператора. Т.е. пойти по пути разбиения на элементарные выражения. И трансформировать jenya7time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 в вид time > 17:00 => memory1 temperature > 30 => memory2 in1 = 1 => memory3 memory2 AND memory3 => memory2 memory1 OR memory2 => memory1 memory1 IS TRUE => SET out1=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:55 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima TХрани в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 11:57 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7пользователь ничего не знает о польской нотации и програмировании.На калькуляторе он считать умеет? ячейкой памяти на нём пользоваться умеет? этой квалификации достаточно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7как хранить и обрабатывать логические группы? Начать можно с подхода "по-дилетантски". Снять нагрузку с парсера и переложить её на оператора. Т.е. пойти по пути разбиения на элементарные выражения. И трансформировать jenya7time > 17:00 OR (temperature > 30 AND in1 = 1) out1=1 в вид time > 17:00 => memory1 temperature > 30 => memory2 in1 = 1 => memory3 memory2 AND memory3 => memory2 memory1 OR memory2 => memory1 memory1 IS TRUE => SET out1=1 вот тут как раз затык :) как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7пользователь ничего не знает о польской нотации и програмировании.На калькуляторе он считать умеет? ячейкой памяти на нём пользоваться умеет? этой квалификации достаточно... у меня нет никакой математики. только логические условия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7Dima TХрани в массиве в Польской нотации и напиши свой вычислятор. Это не не сложно. пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. При чем тут пользователь? Вопрос стоял так jenya7но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот и парси то что ввел пользователь в польскую нотацию, а при проверках вычисляй. Можешь просто парсить каждый раз, но с предобработкой быстрее. ИМХУ тут код не сложнее твоего будет. Но универсальный, любое выражение пользователя в такую структуру впишется. PS Akina, по сути тоже самое предлагает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:09 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7пропущено... пользователь ничего не знает о польской нотации и програмировании. он может написать простое логическое условие понятное каждому. и потом зачем влезать в - форты, стеки, польские нотации - это все прекрасно но есть место и для других решений. мой способ прекрасно работает и занимает пару строк. единственно что надо это модифицировать его. При чем тут пользователь? Вопрос стоял так jenya7но при усложнении логики и добавлении скобок парсинг резко усложняется и не понятно какую структуру изобрести для сложных логических выражений. вот и парси то что ввел пользователь в польскую нотацию, а при проверках вычисляй. Можешь просто парсить каждый раз, но с предобработкой быстрее. ИМХУ тут код не сложнее твоего будет. Но универсальный, любое выражение пользователя в такую структуру впишется. PS Akina, по сути тоже самое предлагает. боюсь польскую нотацию мне не потянуть. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:13 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7боюсь польскую нотацию мне не потянуть. :) Но в конце-концов именно ее ты и "изобретешь" Все придумано до нас :) Почитай про Обратную польскую запись Там все вплоть до алгоритмов как из обычной преобразовать. Примеры кода там же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:23 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Если смущает что у тебя >=, OR, AND а там +,- и т.д. рассматривай >=, OR, AND как такие же действия как и +,- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:31 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая.ЗАЧЕМ? То, что я привёл - это именно то, что оператор должен передать контроллеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 12:39 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7как знать програмно что memory2 AND memory3 - это одна группа а memory1 OR memory2 вторая.ЗАЧЕМ? То, что я привёл - это именно то, что оператор должен передать контроллеру. я понял. да это неплохое решение. но дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно. представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. я немного утрирую но дрифт такой. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:00 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7, как устроен пользовательский интерфейс? физически ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:06 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. Пример некорректен. jenya7дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно.Ну так и сделайте ему комфортный интерфейс программирования. С унифицированными блоками и конструкциями, отслеживанием, автогенерацией, контекстной справкой, эмуляцией выполнения с отладкой... А если оператор, в должностные обязанности которого входит программирование контроллера, не умеет этого делать и неспособен во вменяемые сроки научиться - надо ставить вопрос о его профнепригодности, а не подтирать ему задницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:37 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7, как устроен пользовательский интерфейс? физически обычный терминал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 13:56 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7представте себе что вы купили какой нибудь прибор и вам предлагают писать там скрипты чтоб запустить его а вы на минуточку не програмист а водитель автобуса. Пример некорректен. jenya7дело в том что я не хочу сильно загружать пользователя. ему должно быть максимально комфортно.Ну так и сделайте ему комфортный интерфейс программирования. С унифицированными блоками и конструкциями, отслеживанием, автогенерацией, контекстной справкой, эмуляцией выполнения с отладкой... А если оператор, в должностные обязанности которого входит программирование контроллера, не умеет этого делать и неспособен во вменяемые сроки научиться - надо ставить вопрос о его профнепригодности, а не подтирать ему задницу. это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 14:05 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7но нужно дать возможность работать с обычного терминала. значит командный язык внятный разработать нужно и задокументировать, внутреннее представление - вторично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 16:20 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. Помнится, во времена ROM-BASIC распрекрасно программа вводилась в режиме терминала, и никого это не парило. Сделай аналогичный BASIC для своего контроллера - и всего-то делов, что нумеровать строки и иметь операцию вставки строки с заданным номером (при наличии такого номера выполняя замещение) и удаление строки с заданным номером. Всё равно созданный тобой код работает в режиме интерпретации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 16:56 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Akinajenya7это расчитано на обычного пользователя. я сделаю со временем десктопную апликацию но нужно дать возможность работать с обычного терминала. Помнится, во времена ROM-BASIC распрекрасно программа вводилась в режиме терминала, и никого это не парило. Сделай аналогичный BASIC для своего контроллера - и всего-то делов, что нумеровать строки и иметь операцию вставки строки с заданным номером (при наличии такого номера выполняя замещение) и удаление строки с заданным номером. Всё равно созданный тобой код работает в режиме интерпретации. да. действительно. всего то делов. и чего я на форум за помощью пришел. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 18:57 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Изопропилjenya7но нужно дать возможность работать с обычного терминала. значит командный язык внятный разработать нужно и задокументировать, внутреннее представление - вторично да вот как раз внутренняя реализация это проблема. парсинг такой или другой я сделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:01 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
jenya7да. действительно. всего то делов. и чего я на форум за помощью пришел. :) Это 18881581 почитал? Там все элементарно. Не изобретай велосипед, потрать чуть больше времени на разбор и напиши один раз на всю оставшуюся жизнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:03 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#18+
Dima Tjenya7да. действительно. всего то делов. и чего я на форум за помощью пришел. :) Это 18881581 почитал? Там все элементарно. Не изобретай велосипед, потрать чуть больше времени на разбор и напиши один раз на всю оставшуюся жизнь. да. там есть один пример где учитываются скобки. пытаюсь его вкурить. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2016, 19:09 |
|
||
|
Обработка логических условий.
|
|||
|---|---|---|---|
|
#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?all=1&fid=16&tid=1340769]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
133ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 461ms |

| 0 / 0 |
