[BlueLeaf1336]> PROBLEMS> GlyphGraph>
history | TOP |
2004/04/15:作成
2004/04/22:撃沈
Test1 | TOP |
タイトルのつけ方と前回からの流れに何の脈絡も見られないような偽装を施して、テストといいながら前回作った解析クラスの単なる機能追加です。
とりあえず、ルート(適当な1バイト文字が見つからないので「¥」(円マーク・当然半角で)を割り当て)と、累乗「^」をサポートしました。それから変数に対応しました、すごく限定的ですが。
ダウンロードファイル:20040415GlyphGraph.zip(176,372bytes)
※簡単にエラーをふくことと、変数に変数を代入しても駄目ということと、変な入力でいじめないでください、にご注意ください。
再び、何が楽しいのか全く分からない画面。まずてっぺんで1行1つで変数というか定数を決めます。2つ目で式を書きます。もちろんですがてっぺんで定義した定数が使用できます。で、ボタンを押すと、3つ目に解析が成功した場合はほとんど同じ文字列が出て4つ目に答えを書き出します。驚くことに答えはあっているようです。
上の実行画面は、次のコードで処理しています。
procedure TForm1.Button1Click(Sender: TObject); var Exp: TTokenizer; Node: TNode; begin Exp := TTokenizer.Create(Edit1.Text); Node := Exp.GetExp(); Exp.Free; Edit2.Text := Node.PrintExp(); Edit3.Text := FloatToStr(Node.Execute(Memo1.Lines)); Node.Free; end;
クラスの方針としては、最初に解析(解析、解析、と書いてますが、前回紹介したサイトのコードをDelphiで書き直したもので、演算子・数値・文字列(=変数)に分割して整理しているだけです)だけしておいて、後は変数表をもらって(Memo1.Lines です)、数値以外の値を求める必要がある場合に変数表を引くという形をとっています。遅いでしょうねぇ、間違いなく。
とはいえ、これで四則演算は少なくともいけますので、Execute を呼ぶ際の変数表の中身を少しずつインクリメントさせるようにしていけば、簡単な一次関数ぐらいは書けそうな感じです。次回は(おそらくこのページですが)グラフを書いてみることにします。(y=ax+b ではなく ax+b と指定することになりそうですが...)
だんだん(? 常に?)日本語が適当になってきました。文章の途中で気が変わって別の内容を書きたくなったとしても、そこまでの文章を直さずに無理やりつなげているためです。元から頭悪いというのもありますが。こういうことをしていると、どんどん文章がかけなくなる気がしますが、ニュアンスは通じると思います。
無理でした。グラフ。でもヘナチョコ数式解析の方は何かに使いたいなぁ。(希望)
Test2 | TOP |
簡単なグラフ(予定)。
Test3 | TOP |
(未定)。
EOF | TOP |