Определение производной выражения, Функция для нахождения производной математического выражения char* |
Здравствуйте, гость ( Вход | Регистрация )
Определение производной выражения, Функция для нахождения производной математического выражения char* |
Гость_AHTOH_* |
29.9.2008, 11:16
Сообщение
#1
|
Гости |
Здравствуйте.
Имеется следующая непростая задача. Необходима функция, получающая на входе строку char* ( или AnsiString - но это в другую тему ), которая может содержать цифры, знаки +-*/^, скобки (), и переменную X ( в смысле, это не какое - либо значение, а всего - лишь буква ) и возвращает производную выражения. Т.е. ( тестовый пример ): char* function = "12*X+3*X^3"; char* derivative = GetDerivative( function ); // derivative == "12+9*X^2"; Задача очень непростая. Надеюсь, что кто нибудь ранее сталкивался с этой проблемой. Заранее спасибо. |
|
|
AD |
29.9.2008, 11:56
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Впринципе эту задачу уже не так сложно решить! Разбор математического выражения уже приводился, код выложен.
На входе - строка На выходе - список строк простейших операций: "X + Y" "X - Y" "X * Y" etc Добавить несколько операций несложно. и сделать правильный расчет тоже. Теперь на счет производной - для этого необходимо создать контейнер сопоставления операций. Т.е. что происходит с константами, суммами, произведениями и т.п. Если это делать с помощью Qt-шных средств, то по имеющимся тут темам это сделать не очень сложно! |
|
|
Andrew Selivanov |
29.9.2008, 12:08
Сообщение
#3
|
Участник Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: 6 |
Здравствуйте. Имеется следующая непростая задача. Необходима функция, получающая на входе строку char* ( или AnsiString - но это в другую тему ), которая может содержать цифры, знаки +-*/^, скобки (), и переменную X ( в смысле, это не какое - либо значение, а всего - лишь буква ) и возвращает производную выражения. Т.е. ( тестовый пример ): char* function = "12*X+3*X^3"; char* derivative = GetDerivative( function ); // derivative == "12+9*X^2"; Задача очень непростая. Надеюсь, что кто нибудь ранее сталкивался с этой проблемой. Заранее спасибо. Если это учебная задачка, то решить ее лучше самому Подобная задачка очень обстоятельно расписана в труде Ахо и Ульмана "Компиляторы: Принципы, Технологии, Инструменты" которую не буду говорить где можно найти Если знаешь как решать, то задачка очень простая... |
|
|
Текстовая версия | Сейчас: 9.1.2025, 19:15 |