Я пытаюсь написать приложение на C ++, которое сможет вычислить математическое выражение. Для этого я должен преобразовать инфиксное выражение в постфиксное выражение и затем вычислить значение.
Прежде чем я смогу начать с преобразования инфиксного выражения в постфиксное выражение и вычислить его, я должен сначала создать экземпляр x и y, задав ему значения. У меня вопрос такой. Как я могу найти x и y в строке ‘expr’ в instantiateVariable
назначить ему значения (как это сделано в main.cpp
) когда его нашли?
Я вполне уверен, что можно использовать цикл for, но как мне это сделать? Любая помощь будет оценена.
int main()
{
Expression expr("x + y + sqrt 25 - 3");
expr.instantiateVariable('x',5);//Set x = 5
expr.instantiateVariable('y',3);//Set y = 3
/*
The output of the following statement should be:
Answer: 10
*/
cout<<"Answer: "<<expr.evaluate()<<endl;
}
и в моей папке заголовка у меня есть следующее:
class Expression
{
public:
Expression(string expr);
~Expression();
void instantiateVariable(char name, int value);
int evaluate();
};
Я бы пошел наивно Shunthing-ярд. Принцип прост:
Поддержка этого метода также проста.
Некоторый синтаксический анализ, очевидно, необходим (точнее, токенизация), но это будет довольно просто.