• ベストアンサー

ポーランド記法(前置記法)のアルゴリズム

dummyplugの回答

  • ベストアンサー
  • dummyplug
  • ベストアンサー率58% (134/230)
回答No.1

学校の課題か何かですか? 正直、(RPNもそうですが)ポーランド記法でかかれた式の計算方法は資料をあたらないと考えつかないほどの難しさではないと思います。資料がないからといって諦めず、まずご自分で考えてみることが大切だと思います。その上でわからない(うまくいかない)ところを訊く方が勉強になるでしょう。 ざっと書くと <式の評価>:  step 1)1トークン読み出し  step 2-1)トークンが値であれば、それが式の値  step 2-2)トークンがオペレータ(関数)であれば、引数の数だけ続く式を評価してそれら評価値に対してオペレータを適用した結果が式の値 という感じです。これのどこに木構造やスタックを使うとよいかはやってみればわかります。わからなければとりあえずスタックなどなしでまず書いてみてから再度質問してみてください。

winterv
質問者

お礼

回答ありがとうございます。 具体的にわからない処は、 後置記法の場合は順々に計算していけばいいのでスタックのそのままの考え方で片付くものです。 しかし、前置になるとトークンを保持しておかなければいけないという点でどのように解決すればいいのかという疑問が生じています。

関連するQ&A

  • ポーランド記法、逆ポーランド記法のプログラム

    ポーランド記法、逆ポーランド記法のプログラムがわかる方、是非教えてくださいm(__)m 言語は何でもいいのでお願いします~

  • 逆ポーランド記法

    電卓もどきのアルゴリズムを教えて下さい 指定された数式を解読して、演算結果を求める処理を作成したいのですが・・・・ 今考えている手順は (1) 数式を解析して 逆ポーランド記法の中間言語にして於いておく (2) 逆ポーランド記法の中間言語を演算して答えを求める と考えているのですが・・・ << 例 >>  演算式 1+2×3=    答え 7  演算式 (1+2)×3=  答え 9 大昔の知識ですのでもっとシンプルな方法が有りましたらアドバイス頂けませんでしょうか?

  • 逆ポーランド記法

    C言語で逆ポーランド記法への変換をしようとしています. 演算子の優先順位の付け方がわかりません. 構造体の配列に数式を入れて,それぞれに優先度をつけてみたりしたのですが,いい方法でないように思います. 適切な方法を知っている方よろしくお願いします.

  • 中置記法から後置記法(逆ポーランド記法)への変換について

    課題で 「スタックを用いて、中置記法から小売記法に変換するアルゴリズムを記述せよ。もの中置記法では、括弧、代入文および条件式も対象とすること」 というのがあります。 この場合は、例を示して行ったほうがよいでしょうか?どのようにすればよいかを教えてください。 よろしくお願いします。

  • VB6.0で逆ポーランド記法のソースコードを教えてください

    VB6.0で逆ポーランド記法のソースコードを教えてください。 できれが、通常の計算式から逆ポーランドに変換して計算結果が求められるまで。 お願いします。

  • 逆ポーランド記法

    逆ポーランド式12*3+というのがあります。これを、スタックをつかって評価しようと思ったのですが、 スタック 上位⇔下位   入力記号列 12*3+ 1      2*3+ 21      *3+ 2       3+ 23      + 5 こんな感じの評価でいいんですか?くだらない質問すいませんm(__)m

  • 逆ポーランド記法の優先順位

    問題 X=(A+B)×(C-D÷E)を逆ポーランド記法へ 解説1)計算の優先順位を考える X=(A+B)×(C-D÷E) │   │    └┬─┘ │   └──┬──┘ └──────┘ 2)優先順に逆ポーランド記法に変換(A+B→AB+) A+B → AB+ D÷E → DE÷・・・つづく 優先順位はどうやって判断するのですか。知っている方お願いします。

  • 逆ポーランド記法について

    学校で A=(B-C)/D+E*Fを逆ポーランド記法で書くのを講師が ABC-DE+F*/= と書いたのですが/の位置は ABC-D/E+F*= こう書くのだと思ったのですが何が違うのでしょうか?

  • 式計算アルゴリズムについて

    Javaを使用して、入力した式の計算結果を返す処理を考えているのですが、良い処理方法が見つかりません。 何か良いアルゴリズムがありましたら、ご享受願います。 入力形式は 1+2+(-3+4)*5 と1行の式で入力し、 8 と答えが返るようにする事が目標です。 ※逆ポーランド記法を試してみたのですが、 括弧→() や 整数に符号→- が付いた際に処理が複雑になってしまい、挫折気味です・・

    • ベストアンサー
    • Java
  • 逆ポーランド記法における単項演算子などの処理

    開いていただきありがとうございます。 質問内容は題名の通りなのですが、 中置記法の式を逆ポーランド記法に変換して計算を行う際に単項演算子をどのように扱うかで悩んでいます。+-などのように文脈に応じて意味合いが変化するものもあり、もうひとつスマートに処理することができません。 また前置・後置インクリメントなどに対応するとしたらなおざりに処理するわけにもいきませんし、三項演算子に至ってはどのように処理すればいいのかさっぱりです。 電卓に留まらず、簡単な処理系に組み込むという前提で、これらをどのように使えばよいかご教示いただければと存じます。