正規表現を使って数式を分解し、文字列型配列変数に代入します。
日本語が使えないのが難点です。
関連:インタプリンタ電卓もどき#runtime "hsp3cl"
#module
// 正規表現を利用した数式の分解
// 英数字およびアンダースコア・半角丸かっこと各種演算子のみ使用可能(日本語は無視)
#deffunc split_calc array result, str exp
newcom oReg, "VBScript.RegExp"
comres oMatches
oReg("Global") = 1
oReg("Pattern") = "[0-9\\.]+|\\+|-|\\*|/|%|=|\\w*\\(|\\)|\\w+"
oReg -> "Execute" exp
sdim result, 16, oMatches("Count")
bracket_l = 0 : bracket_r = 0
repeat oMatches("Count")
oMatch = oMatches("Item", cnt)
result(cnt) = oMatch("Value")
s = strmid(result(cnt), -1, 1)
if s == "(" : bracket_l++ : else : if s == ")" : bracket_r++
loop
return bracket_l != bracket_r
#global
exp = "s(r) = r * r * 3.14"
mes exp + "\n"
// 数式を分解
split_calc result, exp
if stat : mes "括弧の数が不正です。"
// 結果の表示
foreach result
mes result(cnt)
loop
stop
2008年1月13日日曜日
数式の分解
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿