--/--/--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2007/09/02

逆ポーランド式の計算失敗

bash で。失敗した。

solve 3 3 3 + +

とかやるともうだめ。

 1 #!/bin/bash
 2 #逆ポーランド方式の数式を解くプログラム
 3 #2007年  9月  2日 日曜日 00:39:56 JST
 4 
 5 function solve () {
 6     stack=""
 7     isEval=false
 8     result=""
 9     for token in $@; do
10             case $token in
11             "+" ) pop_args; add $arg1 $arg2;;
12             "-" ) pop_args; sub $arg1 $arg2;;
13             "*" ) pop_args; mul $arg1 $arg2;;
14             "/" ) pop_args; div $arg1 $arg2;;
15             *   ) push $token
16                   isEval=false
17             esac
18             if [ $isEval=true ]; then
19                 push $result
20             fi
21         done
22     echo ${stack%% *}
23 }
24 
25 function push () {
26     stack="$1 $stack"
27 }
28 
29 function pop_args () {
30     stack=${stack#* }
31     arg2=${stack%% *}
32     stack=${stack#* }
33     arg1=${stack%% *}
34     arg1=${arg1:-$stack}
35 }
36 
37 function add () {
38     isEval=true
39     result=$(($1+$2))
40 }
41 
42 function sub () {
43     isEval=true
44     result=$(($1-$2))
45 }
46 
47 function mul () {
48     isEval=true
49     result=$(($1*$2))
50 }
51 
52 function div() {
53     isEval=true
54     result=$(($1/$2))
55 }
  • 文法チェックとか一切無し。男はだまtt
  • 代入のところで $hoge=hogehoge とかやったり、かなり基本的なことで躓いた。
  • スタックの操作がうまくいってないっぽい。
スポンサーサイト

comment

post




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。