計算式を逆ポーランド記法の計算式に変える

オープンソース形式でコードを共有するフォーラムです。お役立ちコード、あなたも投稿してみませんか?
返信する
メッセージ
作成者
卓漏
記事: 32
登録日時: 2005年11月30日(水) 06:38
お住まい: 静岡県の田舎町

計算式を逆ポーランド記法の計算式に変える

#1 投稿記事 by 卓漏 »

実例としては、計算式「1+2*3+4*(5-6)」を入れると、
逆ポーランド記法に変換した計算式「1,2,3,*,+,4,5,6,-,*,+」が戻ってきます。
また、計算式「(-1)*sin(2)」の場合は、計算式「-1,2,sin,*」が帰ってきます。
自分の方言(プログラムの書き方)の関係で、注釈文が少ない(むしろ書いていない)ので、スパゲッティプログラム化しています。
そのうち、注釈文を追加して、虫退治も行ったプログラムを公開します・・・・。
mm

re 計算式を逆ポーランド記法の計算式に変える

#2 投稿記事 by mm »

((5+7)*(4-2))-15*6/(3+1)

入力すると
5,7,+,4,2,-,*-15,6,3,1,+,/,*
が、返ってきました。

5,7,+,4,2,-,*,15,6,*,3,1,+,/,-

となって欲しいのです。
淡幻星
記事: 183
登録日時: 2005年7月19日(火) 07:02
お住まい: 宮城県
連絡する:

クラス化して、実数&変数&関数対応にしてみました。

#3 投稿記事 by 淡幻星 »

お世話になっております。

クラス化してみました。
変数&実数&関数対応しています。
※関数は、関数認識テーブルにセットしたものだけが有効です。

逆ポーランド記法の取出しには、こちらのキューを使っています。 # ちなみに、「((5+7)*(4-2))-15*6/(3+1)」で試してみると、
# ちゃんと「5,7,+,4,2,-,*,15,6,*,3,1,+,/,- 」の順になります。


【具体的な使用例】
カッコを含む実数の四則算を行う。関数は今回は考慮しない。 関数まで考慮した計算例は後日に余力がありましたら、また。。。
(関数を考慮して逆ポーランドへ変換は出来るが、その先の計算部分が未対応)

→2009.1.18
  関数に対応したコード(Calc_ReversePolishのみ修正)をコチラのスレッドに記載しました。
返信する