アプリ版:「スタンプのみでお礼する」機能のリリースについて

X*(Y-Z)を逆ポーランド表記で表すと、(1)XYZ-*ですか? (2)YZ-X*ですか?回答は(2)みたいなのですが、どうも違いがわかりません。

A 回答 (4件)

この場合、(1)も(2)も正解だと思います。


ただ、コンパイラだと、()を優先的に処理して機械語に落とすので、(2)の手順になるんじゃないでしょうか?

最適化された場合は、どう転ぶか分りませんが。。。
    • good
    • 0

>(y-z)を優先するため



何より優先するのでしょうか。
正解は 「*(かける)より(y-z)を優先する」ですが、
この問題を作った人は、「xより(y-z)を優先する」と勘違いしたのでしょうね。

(x-y)*(z-w) の場合、(x-y)より(z-w)を優先するとは言わないでしょ。
    • good
    • 0

僕も(1)が正解だと思います。


逆ポーランド表記は以下のようなツリー考えます。
(1)  (5)  
↓ ↑
  *
 /  \     
X    -
(2)  Y  Z
   (3)  (4)
先ず、(1)から一番左の子(2)へ下りrootへ戻ります。
このとき逆ポーランド表記は「X」。
次に(3)の子へ下り更に(4)へ行きます。
このとき逆ポーランド表記は「XYZ」。
最後に(5)へ戻ると「XYZ-*」となります。
    • good
    • 0
この回答へのお礼

x×(y-z)÷(i+j)を逆ポーランド法で示すという問いに対して、回答は、「(y-z)を優先するため"yz-",次にxを掛けるため"yz-x×",次に(i+j)を優先するため"yz-x×ij+",最後に÷を行い、"yz-x×ij+÷"と表記される。」となっています。やっぱり間違っていますよね…。

お礼日時:2009/06/09 21:47

私も正解は(1)だと思います。



X*(Y-Z)は(Y-Z)を先に計算するので(Y-Z)をαと置き換えると
 X*(Y-Z)=X*α
で、これを逆ポーランド表記にすると
 Xα* …(a)
αは(Y-Z)で、これを逆ポーランド表記にすると
 YZ- …(b)
(a)のαを(b)で置き換えると
 XYZ-*

なお、(2)のYZ-X*を普通の表記法(中置表記法)にすると
 (Y-Z)*X
で、X*(Y-Z)にはならないと思います。
    • good
    • 0
この回答へのお礼

問題はx×(y-z)÷(i+j)を逆ポーランド法で示すというものです。回答はyz-x×ij+÷であると書かれているのですが、私もxyz-×ij+÷が正しいと思うのですが。。

お礼日時:2009/06/09 21:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!