使用NCal實現變數運算以及自定義函式運算

2021-10-05 18:10:17 字數 1498 閱讀 2948

最近做專案的時候,有這樣乙個需求:需要對現有變數進行運算,將結果賦給新的變數,並且新的變數的值會隨著表示式所包含變數的值的改變而改變。簡而言之,就是求y=kx+b和z=f(x,y)的值。

ncal開源計算庫使用起來十分簡單,只需在例項化的時候傳入運算表示式,以及呼叫evaluate()方法就能得到計算結果。話不多說直接上**:

static void main(string args)

private static void ******calculate(string expression)

");}

乙個最簡單的表示式運算 出來了:

接下來,我們加點難度,傳入的表達是不再是常值,而是我們自己定義的變數,這時候我們需要做的就是告訴expression如何去獲取我們所定義的變數的值。ncal的expression在進行運算,也就是呼叫evaluate()方法的時候,如果遇到無法識別的變數(我們自定義的變數)的時候,會觸發evaluateparameter事件,該事件帶有乙個名為parameterargs引數物件,我們可以來訂閱該事件,並且將我們定義的變數值告訴parameterargs物件,從而計算出變數表示式的值

static int x=10;

static void main(string args)

private static void calculatevariablevalue(string expression)

");}

private static void variableexpression_evaluateparameter(string name, parameterargs args)

}

變數表示式運算結果:

接下來就到了自定義函式階段了,

private static void main(string args)

private static void calcustomfunction(string expression)

");} private static void funexpression_evaluatefunction(string name, functionargs args)

if (name == "pythagorean")

}//勾股定理

private static object pythagorean(object paras)

這裡只是對ncal計算庫功能的一些基本用法的介紹,實際使用的話,需要對expression進行封裝,然後將封裝好的類分別與我們的變數引擎(負責變數管理)和計算引擎(負責函式運算的各種自定義演算法)建立聯絡從而實現對現有變數進行動態的分析處理。

運算子過載實現可變長陣列 以及 自增自減運算

這篇部落格算是在中m上看完老師的課,做的記錄吧。另外這篇部落格是補發的,將兩篇放在一起了,上次發布由於網路原因好像沒有發布出來 carray.cpp 定義控制台應用程式的入口點。include stdafx.h include carray.h includeusing namespace std ...

UITableviewCell使用以及自定義高度

uitableview號稱是 ios裡面最難使用也是最複雜的乙個控制項?是不是暫且不說,反正我覺得httprequest也是挺複雜的。但確實被uitableview折磨了一段時間,還好搞定了一小半。一 如何重用uitableviewcell 重用的目的是為了減少記憶體消耗,假如有1千個cell,如果...

PHP變數以及常量以及運算子

1.php基礎知識 echo hello 2.變數 1 變數不需要指定資料型別 弱型別 2 變數名必須以 開頭 3 命名規則 由英文本母,數字,下劃線組合,不能數字開頭 4 對大小敏感 error reporting e all name 張三 age 20 echo name echo echo ...