2012-04-11 81 views
2

我遇到問題。在我的應用程序中,我想使用一個函數(例如f(x),其中x是變量),在文本框中鍵入該函數,例如sin(x) + x*x - 5C#:從TextBox轉換(識別)MATH公式

我想要的是C#將此函數識別爲Math.Sin(x) + x*x - 5,換句話說要知道x是變量。

我有X大約2000 DATAS,讓說xi,其中i = 2000,所以我要的是f(xi)值,所有的x DATAS,其中f是從文本框的功能。

回答

2

您正在尋找的是表達式解析器 - 即將文本框中的表達式字符串轉換爲可執行的內容(通常爲語法樹)的一段代碼。

如果你谷歌「數學表達式分析器C#」,你會發現各種東西 - 從產品像this到簡單的例子,如this

+0

我看到了.NET數學表達式解析器的例子,但是當我想插手: using info.lundin.Math; 它問我,如果我缺少一些使用指令或程序集引用? 謝謝 – 2012-04-11 15:34:59

+0

我認爲你必須下載MathparserCode.zip,它將包含你需要的程序集。警告:我沒有嘗試,它只是一個鏈接,我發現在互聯網上搜索。 – MiMo 2012-04-11 16:02:59

0

您或您的用戶是否可以提前定義變量名稱?

例如讓用戶知道他們可以使用「y」,「x」或「n」作爲變量名稱,而不是其他任何東西,或者讓用戶在嘗試解析公式之前在程序中定義變量?這將使它在文本中識別它們並相應地處理它們變得更容易。

就實際解析表達式而言,考慮將其轉換爲「逆向波蘭符號」。這裏有一個示例程序:http://www.codeproject.com/Articles/5875/C-Expression-Parser-using-RPN

+0

感謝您的回覆,Mimo和Dylan。就我而言,公式中出現的變量是x。所以,是一個單一的變量。 – 2012-04-11 15:28:03