- ベストアンサー
逆ポーランド表記ってなんですか?
imogasiの回答
- imogasi
- ベストアンサー率27% (4737/17068)
普通小中高で習う演算は演算される数オペランドa,bについて a+b,a*bのように、演算子を間に挟むので間置記法(正確には 挿入記法)です。演算子をオペランドの後に記す記法が考えられます。例えばab+,ab*のように。そんな特異な考え方が威力を 発揮するのは、コンピューター(電卓を含む)時代になって、(A) プログラム演算が簡単になるため(B)カッコが有る式もカッコが不要になるためである。 もう1つ重要な考え方に「スタック」(棚)という概念がありそれと密接に 絡んでいる。PRN=PolishReverseNotation. PRNに直す方法ロジックは出たので、その後(後段)を述べます。 (a+b)*(c-d)はRPNではab+cd-*となります。 この例でプログラム化する方法ロジックを考えました。 (1)演算子と2項・単項の区別表と演算サブルーチンを用意する。 演算子の優先順位の表は不要。 (2)左最初より演算子を探す。ab+の+で見つかる。 (3)見つかれば(+)、その直前の2つの値(単項演算子なら1個) (a,b)をデータとして、演算する。a+b=x (4)結果の値(x)を、ab+は消して、「その元の位置のところへ」挟みこむ。xcd-*とする。 (5)ポインターを次ぎのcより右に進め、演算子を探し-に出会う。 (6)前記(3)と同じことを行う。c-d=y (7)前記(4)と同じことを行う。xy*となる。 (8)前記(2)と同じことを行い*に出会う。 (3)と同じことを行う。x*y=zが出る。 (9)前記(4)と同じことを行う。zとなる。 (10)その後zの次ぎは最後で、終了。 スタックをpush,popで使っていないが、(4)の「もとの位置へ挟みこむ」必要があるので使えなかった。また値のスタックと演算子のスタックは分けないほうが良いのだと思う。WEB検索での解説は大学の講義関連が多く、それにはあまり上記まで解説していない。今後さらに研究します。
関連するQ&A
- 逆ポーランド法の表記について
X*(Y-Z)を逆ポーランド表記で表すと、(1)XYZ-*ですか? (2)YZ-X*ですか?回答は(2)みたいなのですが、どうも違いがわかりません。
- 締切済み
- 情報処理技術者
- VB6.0で逆ポーランド記法のソースコードを教えてください
VB6.0で逆ポーランド記法のソースコードを教えてください。 できれが、通常の計算式から逆ポーランドに変換して計算結果が求められるまで。 お願いします。
- ベストアンサー
- Visual Basic
- 逆ポーランド記法への変換方法を教えてください。
Visual Studio C++ 6.0で逆ポーランド電卓のプログラムを作っていますが、式の変換方法がわからないので教えていただければ助かります。 たとえば (8 + 9 * -8) * 10 だと 8 9 -8 * + 10 * に変換できますが、 -(8 + 9 * -8) * 10 だとどう変換すればよいのかがわかりません。
- 締切済み
- C・C++・C#
- 陶器 ポーランド製など 表記 472?
ポーランド製などの陶器の底にブランドロゴや表記が記載されております。 その表記によく「472」と記載がありますが、この数字は何を意味する数字なのでしょうか? お詳しい方がいましたらご回答よろしくお願いします。
- ベストアンサー
- 家具・インテリア
- ポーランド記法、逆ポーランド記法のプログラム
ポーランド記法、逆ポーランド記法のプログラムがわかる方、是非教えてくださいm(__)m 言語は何でもいいのでお願いします~
- ベストアンサー
- C・C++・C#
- ポーランド語をカタカナ表記に
ポーランド語のカタカナ表記が分からず困っています。自分でも調べてみましたが、分かりませんでした。どなたかご教示いただけませんでしょうか。 ・Krzywy Domek ・Szotynscy Architekci この2つです。どうぞよろしくお願いします。
- ベストアンサー
- その他(語学)
- 逆ポーランド記法の優先順位
問題 X=(A+B)×(C-D÷E)を逆ポーランド記法へ 解説1)計算の優先順位を考える X=(A+B)×(C-D÷E) │ │ └┬─┘ │ └──┬──┘ └──────┘ 2)優先順に逆ポーランド記法に変換(A+B→AB+) A+B → AB+ D÷E → DE÷・・・つづく 優先順位はどうやって判断するのですか。知っている方お願いします。
- 締切済み
- 情報処理技術者