crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Определение производной выражения, Функция для нахождения производной математического выражения 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  


Цитата(AHTOH @ 29.9.2008, 12:16) *
Здравствуйте.

Имеется следующая непростая задача.

Необходима функция, получающая на входе строку char* ( или AnsiString - но это в другую тему ), которая может
содержать цифры, знаки +-*/^, скобки (), и переменную X ( в смысле, это не какое - либо значение, а всего - лишь
буква ) и возвращает производную выражения.


Т.е. ( тестовый пример ):

char* function = "12*X+3*X^3";
char* derivative = GetDerivative( function );

// derivative == "12+9*X^2";



Задача очень непростая. Надеюсь, что кто нибудь ранее сталкивался с этой проблемой.

Заранее спасибо.

Если это учебная задачка, то решить ее лучше самому ;)
Подобная задачка очень обстоятельно расписана в труде Ахо и Ульмана "Компиляторы: Принципы, Технологии, Инструменты" которую не буду говорить где можно найти :)
Если знаешь как решать, то задачка очень простая...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 23:19