文字列として記述された数式の値を求めるモジュールです。
例えば、 {log(2,8)+sqrt(81)}/5 という文字列から、 2.4 というdouble型の数値データを得られます。
前年度コンテストでもこのようなモジュールを応募させて頂きましたが、今回はその第2版です。 システムを根本から作り直し、拡張性を高めました。
数式文字列を一旦中間コードに変換するようにしました。 変換処理で文法エラーを完全に検出できるので、中間コードには文法エラーが一切含まれません。
数式(コード) → 中間コード → 結果
という流れになります。
第1版に対する主な美点・欠点は以下の通りです。
<美点> ・文法エラーチェックの厳格化 → 安全性向上
・扱える変数が a〜z A〜Z の計52個。(第1版では x,y,z のみだった)
・計算の精度が向上(第1版では有効数字が最大17桁かつ小数位6桁固定であったが、第2版では 有効数字17桁になった。)
・関数のパラメータ囲みに [] だけでなく () や {} も使える
・式中で {} () [] のすべてが使える
<欠点> ・計算の所要時間が約1.5倍になった
/// 修正報告 /// [ 2013/8/17/21:54 ] ・文書の軽微な表記ミスを修正 (「a,b,c,d」→「a,b,c」等)
|
完成度:100% |
|
|
|