Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Обработка логических выражений Добавлено: 05.04.08 20:05  

Автор вопроса:  VoVaN | ICQ: 4921085 
Люди, помогите пожалуйста, с такой вещью: Я ввожу в текстбокс что-то типа "True and False and (false or true) and true". В общем, сложное логическое выражение. Может, у кого-то есть пример его обработки, чтобы получить конечный результат в виде булевского значения?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 06.04.08 00:57
Польская инверсная запись

Ответить

Номер ответа: 2
Автор ответа:
 VoVaN



ICQ: 4921085 

Вопросов: 27
Ответов: 38
 Профиль | | #2 Добавлено: 06.04.08 12:14
А можно поподробнее? =)

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 06.04.08 21:17
Гугл.

Ответить

Номер ответа: 4
Автор ответа:
 VoVaN



ICQ: 4921085 

Вопросов: 27
Ответов: 38
 Профиль | | #4 Добавлено: 07.04.08 00:13
млин... что это такое, я в курсе. Мне бы реализацию... ниче не могу найти/придумать

Ответить

Номер ответа: 5
Автор ответа:
 VoVaN



ICQ: 4921085 

Вопросов: 27
Ответов: 38
 Профиль | | #5 Добавлено: 07.04.08 00:13
млин... что это такое, я в курсе. Мне бы реализацию... ниче не могу найти/придумать
В любом случае за идею спасибо

Ответить

Номер ответа: 6
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #6
Добавлено: 07.04.08 00:31
четай про лексический анализатор. строй дерево выражений. или на стеке реализовывай. если бы не скобки, то можно линейно идти. а так сначала нада построить порядок вычислений, а потом уже высчитывать. ваще задачка весьма проста, лексемм всего ничего. отличная задача для проверки ума - сам не сможешь решить, значит не стоит кодить :p

Ответить

Номер ответа: 7
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #7
Добавлено: 07.04.08 15:53
замени в строке все true на 1, false - 0, and - *, or - +. У * приоритет 2, у + - 1, у скобки - 0.
Преобразование из инфиксной формы в постфиксную:
идем по строке
если это операнд, то он передается в выходную строку
если (, то она заносится в стек с приоритетом 0
если это операция, то ее приоритет сравнивается с приоритетом операций в вершине стека. если приоритет выше, то операция заносится в стек, иначе из стека извлекается операция и помещается в выходную строку. процесс сравнения повторяется до тех пор, пока стек не станет пустым или будет найдена операция с более низким приоритетом, после этого текущая операция заносится в стек.
если текущий символ ), то операции из стека последовательно переносятся в выходную строку до тех пор, пока на вершине стека не появится (. эта скобка извлекается из стека и отбрасывается.
если выражение закончилось, то из стека последовательно переносятся в выходную строку все оставшиеся в нем операции.

подсчет выражения:
идем по новой строке
после чтения операнда он записывается в стек
если читается операция, то из стека извлекаются 2 последних операнда, к ним применяется операция и результат записывается в стек.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам