作者Nestarneal (涅斯)
看板C_and_CPP
標題[問題] C++/CLI 寫計算機
時間Sun Oct 23 00:29:27 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
C++/CLI
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
.NET Framework 4
問題(Question):
我設定可以讓使用者輸入 power(x, y) 這樣形式的功能算次方
對於空白的部分有函數會負責清除,所以空白的部分可以省略,每個字元都是接在一起的
然後我還有一個函數(expr)可以傳入字串、傳回數值(type: double)
所以對於 power(x, power(2,2) ) 這樣的式子我原本想法是找到第一個逗號以後
從第一個括號以後到第一個逗號之前為一個子字串,
傳入expr當成外部power的第一個參數
從第一個逗號之後到最後一個括號之前則是一樣看成另一個子字串,
傳入expr當成第二個參數
所以上面式子可以看成 power(expr的傳回值1, expr的傳回值2) 接著就能計算次方
可是我後來想到如果變成這樣的形式 power( power(2,2) , y)
那麼第一個子字串變成 power(2
而第二個子字串變成 2),y
因為我都固定取第一個逗號
所以我想請問,
該怎麼才能取得我必須拿來當作是切割第一個子字串跟第二個子字串的逗號呢?
程式碼(Code):(請善用置底文網頁, 記得排版)
程式碼主要是這兩行
subinput = extract(input, index);
return Math::Pow(
expr( subinput->Substring( 0, subinput->IndexOf(L',') ) ),
expr(subinput->Substring(subinput->IndexOf(L',')+1,
subinput->Length - subinput->IndexOf(L',')-1))
);
上面有點太長這邊我排個版方便閱讀,這是第一個Math::Pow()的參數:
expr( subinput->Substring( 0, subinput->IndexOf(L',') ) )
這是第二個參數:
expr(subinput->Substring(
subinput->IndexOf(L',')+1,
subinput->Length - subinput->IndexOf(L',')-1)
)
補充說明(Supplement):
extract是把 power(x,power(2,2)) 抽出 x,power(2,2) 當成子字串交給
subinput(type: String^)
expr是把一個運算式當成子字串傳入,回傳計算完畢的值(type: double)
變數index則是會在第一行執行完以後,內容存著整個power()後面的第一個字元的索引值
謝謝:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.38.5.222
※ 編輯: Nestarneal 來自: 114.38.5.222 (10/23 00:31)
→ azureblaze:(和)會成對出現所以你可用經過幾個(和)來判斷是第幾層 10/23 00:38
→ Nestarneal:謝謝~寫出來了 :) 10/23 16:12