×

[PR]この広告は3ヶ月以上更新がないため表示されています。
ホームページを更新後24時間以内に表示されなくなります。

逆ポーランド記法の計算

逆ポーランド記法(Reverse Polish Notation, RPN)とは、数式の記述方法で、演算子を被演算子の後に記述する表記法です。日本語では、後置記法とも呼ばれたりします。
この記法は、演算の優先順位を指定する括弧が不要な点が特徴のひとつです。
詳しくは、Wikipediaのページをご覧ください。

ここで示すプログラムは、逆ポーランド記法で表記された数式を計算するものです。

※なお、通常の数式を逆ポーランド記法に変換し、それを計算するプログラムについては、こちらをご覧ください。

テキストボックスに、逆ポーランド記法で数式を入力し、ボタンを押してください。
たとえば、

1 5 + 2 3 + *

と入力すれば、30 と答えが表示されます。 


Wikipediaに書かれているように、スタック(Stack<T>)クラスを利用し、計算をしています。
先頭から順に読み込み、演算子でなければ、スタックに値を積み、演算子だったら、スタックから値を2つ取り出し、計算を行い、その結果をスタックに積みます。これを繰り返すことで、計算を行います。

作成したプログラムは、逆ポーランド記法を表す ReversePolishNotation クラスと、ReversePolishNotationオブジェクトで示される式を計算する RpnCalculator クラスがあります。
この2つのクラスを、MainPage で利用しています。

以下、C#+Silverlightのコードです。

■ReversePolishNotation.cs
 

■RpnCalculator.cs
 

■MainPage.xaml.cs
 

■MainPage.xaml