• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • 3048F
  • ベストアンサー率25% (2/8)
回答No.2

逆ポーランド記法だったら、大きなスタックを作って計算させるのが 楽なことで有名です。 式を前から読み込んでいって ・数字がきたらスタックに積む ・演算子がきたらスタックから二つ取り出して計算して結果をスタックにつむ の繰り返しで計算機ができてしまいます。 http://www.sm.rim.or.jp/~shishido/pol.html http://karma.j.dendai.ac.jp/for2j/algo1/kaisetsu07.html #スタック自体わからなかったらそう書いてください

その他の回答 (3)

回答No.4

> (3*(3+4)-2)と入力したら、3 3 4 + * 2 -というように変換された出力が得られるプログラムを作ろうと思っています。 ...最初っからそう訊いて欲しい。 下記 URL 参照。

参考URL:
http://www.logical-paradox.org/ja/nsxbasic/nsxbasic3.html
回答No.3

> 例えば、(3*(3+4)-2)と入力したら、19という出力が得られるプログラムを作りたいと思っています。 ならばまず、入力された数式をRPNに変換、すなわち: 3 3 4 + * 2 - に変換します。あとは #2 にあるとおり。

akiko7
質問者

補足

すみません。また説明間違ってましたm(__)m (3*(3+4)-2)と入力したら、3 3 4 + * 2 -というように変換された出力が得られるプログラムを作ろうと思っています。今作っているのですが、思いどうりにプログラムが動きません。どうか教えてくださいm(__)m

回答No.1

PN/RPNの何について知りたいのですか? 正直これでは答えようがありません。

akiko7
質問者

補足

説明不足でしたね。すみませんm(__)m PN/RPNのプログラムを作って、実際に動かそうと思っています。 例えば、(3*(3+4)-2)と入力したら、19という出力が得られるプログラムを作りたいと思っています。 言語はC言語でもPascalでもアセンブリ言語でも何でもいいと思っているのですが…

関連するQ&A

  • 逆ポーランド記法

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

  • 逆ポーランド記法

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

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

    ポーランド記法を使用した計算のアルゴリズムについて教えてください。 逆ポーランド記法についてはたくさんの資料が存在しますが、ポーランド記法については資料がないのでどのように考えたらよいのかわかりません。 スタック又は木構造を用いて計算するアルゴリズムをお願い致します。

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

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

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

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

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

    問題 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)  と  (B + C)×A は同じ答えですよね? これをそれぞれ前置記法にすると・・・ ×A + BC    と   × + ABC となるのでしょうか?? もし、そうであるのならば・・・ 2つとも前置記法で出される結果は同じでしょうか?? よろしくおねがいします。

  • 逆ポーランド記法

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

  • 逆ポーランド記法における単項演算子などの処理

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

  • 逆ポーランド記法の変換法

    以前逆ポーランド記法の優先順位について質問したのですが、いまいち変換法が分かりません。 例1 A+B*(C+D)+E →ABCD+*+E+ ABとCDがなぜ一緒になるのか。 例2 (A+B)*(C-D)→AB+CD-* なぜ例1のABとCDは、ABCDになって、こっちはAB+CDなのか。なぜ*が一番後ろなのか。参考書は2冊ありますが、見ても?です。手順を詳しく説明して頂ける方、よろしくお願いします。

専門家に質問してみよう