Вопрос № 143818: Доброго времени суток уважаемые эксперты! Возникла необходимость в написании «множественного калькулятора». Для множеств необходимо использовать стеки. Необходимые функции как-то: “Пересечение”, ”Объединение”, ”Разность”, “Симметрическая разность”, ...
Вопрос № 143.818
Доброго времени суток уважаемые эксперты! Возникла необходимость в написании «множественного калькулятора». Для множеств необходимо использовать стеки. Необходимые функции как-то: “Пересечение”, ”Объединение”, ”Разность”, “Симметрическая разность”, “Дополнение до универсума” я уже написал. Теперь собственно сама проблема: Пользователь вводит выражение любой (ну или почти любой ;-)) размерности, а программа решает это выражение. Как для открывающей скобки найти закрывающую – я догадываюсь (но хотелось бы
узнать мнение других: моя процедура написана как-то криво ). А как решить длинное выражение (например (A(C*C-B+A)*(B+C)) – знаки соответствуют операциям над множествами)? (кроме использования массивов на ум мне ничего не приходит) Заранее спасибо.
Отвечает: Олекса aka SoW
Здравствуйте, Евчик Сергей Александрович!
Для траснсляции произвольных арифметических выражений есть специальные способы. Один из лучшых - метод обратнй польской записи. В одном сообщении трудно его описать. Он очень детально описан в главе 3 книги А. Архангельского "Примеры програмирования в Delphi на основе VCL".
Вот приложение (графический калькулятор) с исходниками, по которых вы можете детально рассмотреть использование етого метода: http://upload.com.ua/get/900438754
--------- Вiк живи - вiк учись.
Ответ отправил: Олекса aka SoW (статус: 3-ий класс)
Ответ отправлен: 13.09.2008, 18:38 Оценка за ответ: 5 Комментарий оценки: Спасибо огромное! Вы мне очень помогли