Как преобразовать строковое уравнение С# в ответ

Я создаю приложение WP8, которое решает задачи численного анализа. Для одного шага мне нужно проанализировать введенную функцию, но я ничего не знаю о разборе, и я попробовал что-то еще

У меня есть стековая панель с математическими компонентами (Sin(x),Cos(x),Tan(x),+,-,*...)

когда пользователь щелкает любой компонент

Например, сначала Sin(x), затем +, а затем Cos(x)

string yazılıdenklem =""; int xdegeri=Convert.ToInt32(Xtxt.Text);

private void Sin_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem=yazılıdenklem+"Math.Sin("+xdegeri.ToString()+")";

    }

 private void artı_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem = yazılıdenklem + "+";
    }
 private void Cos_Tapped(object sender, TappedRoutedEventArgs e)
    {

        yazılıdenklem = yazılıdenklem + "Math.Cos(" + xdegeri.ToString() + ")";
    }

Конец выбора. У меня есть строковое уравнение, например: «Math.Sin(3)+Math.Cos(3)». Могу ли я преобразовать это уравнение в любую числовую форму? Могу ли я получить какой-либо результат от этого строкового уравнения. ? Спасибо


person OknAkdgn    schedule 14.07.2014    source источник
comment
Прочтите о библиотеке NCalc.   -  person Konrad Kokosa    schedule 14.07.2014
comment
Библиотека @KonradKokosa NCalc не поддерживает Win 8 или Win 8.1.   -  person OknAkdgn    schedule 14.07.2014


Ответы (1)


bcParser.NET — это безопасная функция eval() для оценки математических формул. bcParser.NET — это библиотека математического анализатора для платформы .NET. bcParser.NET анализирует и оценивает математические выражения, представленные в виде строк во время выполнения.

MathParser.SetExpression("sin(3)+cos(3)");
double value = MathParser.getValueAsDouble();
person Monitor    schedule 14.07.2014
comment
Я добавил bcParser dll и написал свой код следующим образом MathParser parser = new MathParser(); parser.SetVariable("sin(3)+cos(3)", 15); double result = parser.ValueAsDouble; Denklem.Text = result.ToString();, но он не работает, он говорит Additional information: sin(3)+cos(3) is not a valid variable name. - person OknAkdgn; 14.07.2014
comment
Это работает, есть только одна ошибка в коде parser.SetVariable, который не работает, вместо этого используйте parser.Expression. Спасибо @JeevaMahendran - person OknAkdgn; 14.07.2014
comment
но bcParser не бесплатный - person OknAkdgn; 15.07.2014