Здравствуйте, RiNSpy, Вы писали:
RNS>Здравствуй, All,
RNS>Нужно написать ф-цию, которая бы брала производную от математической ф-ции. То есть на входе есть string типа "((3*x+x^2-5)/(6*x^3-x/2+4)*(5*x+6)+5*x)+x", на выходе моя ф-ция должна давать string c производной. На входной string есть ограничения — в нем не могут быть сложные функции(типа "x^(3*x+2)"), но зато могут быть вложенные скобки. Из мат. функций используются только сложение, вычитание, деление, умножение, возведение в степень, sin(x) и cos(x). Подскажите pls как к этой проблеме подступиться, интересно, какое здесь есть наиболее красивое решение. Да, ф-цию пишу на c++.
Первое, что приходит в голову:
Написать класс Function:
class Function()
{
public:
...
string f;
void Split();
bool Diff();
int GetOperation();
Function* GetOperand();
Function** functions;
...
private:
...
}
То есть Split ищет "подфункции 1-ого порядка" внутри функции, выделяет их в объекты класса Function, записывает указатели на них в functions. Также в классе Function хранится информация об операции, которая выполняется над данной ф-цией(+, -, *, /), и указатель на ф-цию, с которой эта операция выполняется(то есть если есть "(x+3)*(2*x+5)" то this.f="x+3", this.GetOperation вернет 3 что значит *, this.GetOperand->f вернет "2*x+5".
Я на правильном пути?

... << RSDN@Home 1.1.4 beta 7 rev. 447>>