1

数学関数を区別するために Pascal でプログラムを作成しようとしています。それは非常にうまく機能しています (最小/最大の計算、対称性、グラフの描画など) が、次のように関数 (つまり x^3+3x+2) をソース コードに入れる必要があります。

function f(x : real): real;
begin 
   f := x * x * x + 3 * x + 2;
end;

ただし、区別する関数をユーザーに定義してもらいたいです。明らかに readln 関数は役に立ちません。誰かが、唯一の解決策は特定のパーサーだと言いました。しかし、それは非常に難しく、私はそれを行う方法がわかりません。私の考えは、関数を *.txt ファイルに抽出して、簡単に変更できるようにすることです。それは可能ですか?誰かがこの問題を解決できるパーサーを見せてくれますか、または誰か他の素晴らしい解決策を持っていますか? 助けていただければ幸いです。前もって感謝します ;)

4

2 に答える 2

0

SWAGには多くのパーサー/評価者もいます。

最も役立つと思われるものを太字にしました。他の回答のシンボリックパッケージほど完全なものはないと思いますが、助けが必要な場合は読む価値があります。

(これはすべてかなり古いコードです。特に明記しない限り、SWAG のルールは、このようなものを新しいスタイルの BSD ライセンスを持つものとして扱うことです)

于 2013-04-09T05:09:54.133 に答える
0

Free Pascal には、数式のパーサーと評価器の両方を備えたシンボリックパッケージが同梱されています。おそらくこれを出発点として使用できます。使用法については、ドキュメントを参照してください。

于 2013-04-09T04:42:09.207 に答える