Проверка правильности записи алгоритма в инфиксной форме
От: Aidan4 Россия http://aidan4.by.ru/
Дата: 28.11.06 18:33
Оценка:
Необходимо написать проверку арифметического выражения, содержащего только бинарные операторы и заглавные латинские буквы — в качестве операндов. Скобки в выражении также есть.

Например: A*(B+A)-C/D*(B+C)

Надо проверить, что всё это правильно записано. Как бы это сделать? Наверное, алгоритм избит до боли, но мне в голову ничего толкового не идёт почему-то.
Re: Проверка правильности записи алгоритма в инфиксной форме
От: Кодт Россия  
Дата: 29.11.06 11:22
Оценка:
Здравствуйте, Aidan4, Вы писали:

A>Необходимо написать проверку арифметического выражения, содержащего только бинарные операторы и заглавные латинские буквы — в качестве операндов. Скобки в выражении также есть.

A>Надо проверить, что всё это правильно записано. Как бы это сделать? Наверное, алгоритм избит до боли, но мне в голову ничего толкового не идёт почему-то.

Проще всего — проверить баланс скобок.

Ну и локальную правильность: чтобы не было двух операторов или двух аргументов подряд, чтобы не было пустых скобок...
Т.е. допустимы следующие последовательности

BEGIN value
BEGIN '('
'(' value
')' operator
value operator
operator value
operator '('
value END
')' END
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Проверка правильности записи алгоритма в инфиксной форме
От: Панда Россия  
Дата: 29.11.06 12:24
Оценка:
Здравствуйте, Aidan4, Вы писали:

A>Необходимо написать проверку арифметического выражения, содержащего только бинарные операторы и заглавные латинские буквы — в качестве операндов. Скобки в выражении также есть.


A>Например: A*(B+A)-C/D*(B+C)


Назовем любое допустимое выражение, не содержащее скобок, простым выражением.

Можно, например, так

1. Ищем две парные скобки "(" и ")", между которыми нету других скобок.
2. Рекурсивно проверяем, что содержимое скобок, является корректным простым выражением.
3. Скобки вместе с содержимым заменяем на любую букву, преобразуя их в операнд.
4. Снова переходим к п.1, пока скобки не кончатся
5. Поверяем, что оставшееся является корректным простым выражением.

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