• 締切済み

逆ポーランド記法への変換方法を教えてください。

Visual Studio C++ 6.0で逆ポーランド電卓のプログラムを作っていますが、式の変換方法がわからないので教えていただければ助かります。 たとえば (8 + 9 * -8) * 10 だと 8 9 -8 * + 10 * に変換できますが、  -(8 + 9 * -8) * 10 だとどう変換すればよいのかがわかりません。

みんなの回答

  • goosyu
  • ベストアンサー率58% (36/62)
回答No.2

 「-(8 + 9 * -8) * 10」のような場合、「-1 * (8 + 9 * -8) * 10」に置き換えてから、もともとの処理を行います。  処理的には先頭に「-(」とある場合にのみ、「-1*(」に置換するだけだったと思います。

scenery300
質問者

お礼

お~ -1 をかければよかったんですね これなら何とかプログラムを組めそうです。 goosyu さん回答ありがとうございました。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

二項演算子のマイナスとは別に、単項演算子のマイナス(符号の反転)を導入してください。

scenery300
質問者

お礼

salsberry さん回答ありがとうございました。 単項演算子のマイナス(符号の反転)の導入をするのは、私のプログラム力では無理のようです。