練習問題(アルゴリズム編)

例外処理がないです。

=begin
ruby main.rb 1 2 + 4 5 + \*
> 27
ruby main.rb 1 2 + 3 \* 4 5 / -
> 8.2
ruby main.rb 5 13 + 6 / 2 % 4 5 \* -
> -19
=end
st = []
ARGV.each { |e|
  if e=='+'
    b, a = st.pop, st.pop
    st.push(a+b)
  elsif e=='-'
    b, a = st.pop, st.pop
    st.push(a-b)
  elsif e=='*'
    b, a = st.pop, st.pop
    st.push(a*b)
  elsif e=='/'
    b, a = st.pop, st.pop
    st.push(a%b==0 ? a/b : a*1.0/b)
  elsif e=='%'
    b, a = st.pop, st.pop
    st.push(a%b)
  else
    st.push(e.to_i)
  end
}
p st.pop

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-02-23 (木) 23:33:34