Не могу решить математическое выражение, используя DDMathParser

Я использую DDMathParser разобрать строковые выражения. Я работаю над одним выражением, которое "(2+x)6+2x+2y=5y+2x"Я пытаюсь разобрать его и оценить, используя DDMathParser, Это можно рассматривать как функцию первой степени, которую мне нужно решить с помощью Цели C.

Ребята есть идеи?

Помощь будет высоко ценится.

DDExpression * e = [DDExpression expressionFromString:expression error:error];
NSNumber *num = [e evaluateWithSubstitutions:substitutions evaluator:nil error:error];

1 ответ

Решение

Я не знаю много о DDMathParser (Хорошо, я ничего не знаю об этом), но , взглянув на документацию, вы поймете, что не так с вашим кодом.

Основываясь на документации, я не смог найти пример того, где DDMathParser может обрабатывать символические выражения. Все примеры на странице использования показывают числовые выражения.

Символьная математика приведена в разделе Библиотека символической математики в C / C++ / Obj-C.

Кроме того, похоже, что вы пытаетесь найти две переменные с помощью одного уравнения, что, безусловно, не приведет к числовому решению.

Однако, если вы просто пытаетесь подставить значения в x а также y, вы должны использовать $ подписать перед ними, как говорится в документации:

Если вы не знаете, каким должно быть значение конкретного термина при построении строки, это нормально; просто используйте переменную:

     NSString *math = @"6 * $a";

Поэтому, если вы просто хотите заменить значения в своем выражении, попробуйте использовать:

string expression = @"(2+$x)6+2*$x+2*$y";

Затем заполните значения.

NSDictionary *s = @{@"x" : 42, @"y" : 43};

И оцените.

DDMathEvaluator *eval = [DDMathEvaluator sharedMathEvaluator];
NSLog(@"%@", [eval evaluateString:expression withSubstitutions:s]);
Другие вопросы по тегам