0

ユーザー入力の数学関数(例:Math.Sqrt(x)など)を読みたいテキストボックスがあります。

関数のコンソールテストに使用しているコードは次のとおりです。

    static double f(double x)
    {
        double f;
        f = Math.Sqrt(x);
        return f;
    }

変更方法がわかりません。文字列内のテキストボックスの内容を読み取り、その文字列をf関数の2番目の引数として追加しますか(static double f(double x、string s)?どのタイプの解析を行う必要がありますか?文字列に適用しますか?

4

4 に答える 4

5

使用できる数式パーサーがいくつかあります。

基本的にあなたはあなたの公式を評価する誰か/何かを必要とします。

私はこれを自分のプロジェクトでうまく使っています。それはそれを次のように呼ぶことができます

var ev = 
    new Eval3.Evaluator(
        Eval3.eParserSyntax.c,/*caseSensitive*/ 
        false);

MessageBox.Show(ev.Parse("1+2+3").value.ToString());

コンパイルした各コードをアプリケーションドメイン(「アプリドメイン」)に追加し、再度アンロードするオプションがないため、C#コードの動的コンパイルを使用することはお勧めしません。(私が間違っている場合は、私を訂正してください)。

于 2012-05-08T06:33:20.297 に答える
1

別の評価者:http://csharp-eval.com/

于 2012-05-08T06:37:22.440 に答える
0

テキストボックスからテキストを取得し、値を使用して何かを実行する方法に興味がある場合は、次のコードでそれを実行できます。テキストボックス(sqrt(40))に関数を入力する場合は、次のプロジェクトを確認する必要があります:http: //www.codeproject.com/Articles/23061/MathParser-Math-Formula-Parser

http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.aspx

static double f(Textbox tb)
{
    double f;
    double x = Double.Parse(tb.Text);
    f = Math.Sqrt(x);
    return f;
}
于 2012-05-08T06:39:07.120 に答える
0

任意のコードを実行できますが、簡単ではありません。一般的なコードの場合、ラッパークラスを作成し、コードを関数に挿入する必要があります。

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/6a783cc4-bb54-4fec-b504-f9b1ed786b54/をご覧ください。

于 2012-05-08T06:39:21.927 に答える