C-острый математический вопрос с квадратным корнем - PullRequest
0 голосов
/ 19 марта 2012

Как мне оценить следующее выражение из строки в ответ как целое число?

Выражение:

√(7+74) + √(30+6)

Нужно ли оценивать каждоетаких параметров, как Sqroot (7 + 74) и Sqroot (30 + 6), или можно оценить все выражение.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Если эта строка предоставлена ​​пользователем (или в любом случае доступна только во время выполнения), то вам нужен синтаксический анализатор математических выражений (возможно, замена символа √ в тексте на sqrt или что угодно, что парсеру нравится перед передачей строки в него)).В сети доступно множество бесплатных программ, лично я несколько раз без проблем использовал info.lundin.math .

Быстрый пример вашей проблемы:

info.lundin.Math.ExpressionParser parser = new info.lundin.Math.ExpressionParser();
double result = parser.Parse("sqrt(7+74)+sqrt(30+6)", null);

(на сайте вы можете найти более сложные примеры, например, параметры, которые можно задавать программно)

1 голос
/ 19 марта 2012

Вы можете использовать NCalc для этой цели

NCalc.Expression expr = new NCalc.Expression("Sqrt(7+74) + Sqrt(30+6)");
object result = expr.Evaluate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...