〜お久しぶりです〜 久しぶりの作品は若干手の込んだものになりました。 〜概要〜 本プロジェクトは、任意の文字列で入力された数式をそれぞれの要素(関数)に分類するプログラムです。 ※入力にサポートされている文字/関数以外を含むとバグります。 関数は小文字での入力、また×÷は*/での表記です。 使える関数は画面左側Referencesリストをご覧ください。 一応、中括弧{}と大括弧[]も対応させていますが、小括弧()と意味の差はありません。どちらを使ってもOKです。 数字に関してはし数表記(e)を含まない実数のみ対応しています。少数はもちろん対応しています。 書式通りに入力すれば、左上には入力したものが、右側Formulaリストにそれぞれの要素に分けた結果がそれぞれ出力されます。 是非、以下の例を試してみてください。 atan(log((sin30)^2+(cos30)^2+√(9.000^2)))/45 Formulaリスト(右側)に全ての要素が分類されていることがわかると思います。 今後、これに計算機能を搭載する予定です(他プロジェクトで実装予定)。 〜手こずりポイント〜 関数を的確に分類する点は苦労しました。中身として、4字ずつに区切ってその中に関数を含むかを見ているのですが、以下のような区切りになった場合、失敗します。 -sin この場合、関数の検索(リファレンス参照)の順番の都合で、関数出力が sin になってしまいます。これはその関数がもう1つの関数(この場合、負号-)より後の順番(Referencesリスト内の順番)に存在しているため、そちらが適用されてしまいます。 これの解決のため、Cache変数を駆使して解決しました。その区切りの1文字目が検知した関数の要素となっているかを確認しています。 また、/が認識されない問題に関して、除算記号/は、内部的に数値として扱われていました。このため、数値判定のコード内に/を除外するコードを追加して対処しました。 <EN> This is a advanced system to classify the functions of formulas. You can type formula in box, them results will display in the list "Formula"(Right side). The functions which you can use are listed in the list "References"(Left side). Example: atan(log((sin30)^2+(cos30)^2+√(9.000^2)))/45