前田稔(Maeda Minoru)の超初心者のプログラム入門
普通の数式 | 逆ポーランド記法 |
---|---|
9+8-3*4 | 98+34*- |
a+b*c-d | abc*+d- |
a-b*c+e/d | abc*-ed/+ |
普通の数式 | 逆ポーランド記法 |
---|---|
9+8-3*4=5 | 98+34*- |
スタック | 演算 | ソース 98+34*- |
8,9 | +34*- |
17 | 9+8=17 | 34*- |
4,3,17 | *- |
12,17 | 3*4=12 | - |
5 | 17-12=5 |
普通の数式 | 逆ポーランド記法 |
---|---|
9+8-3*4=5 | 98+34*- |
出力 | スタック \0 | 入力 9+8-3*4\0 |
9 | \0 | +8-3*4\0 |
9 | \0,+ | 8-3*4\0 |
9,8 | \0,+ | -3*4\0 |
9,8,+ | \0,- | 3*4\0 |
9,8,+,3 | \0,- | *4\0 |
9,8,+,3 | \0,-,* | 4\0 |
9,8,+,3,4 | \0,-,* | \0 |
9,8,+,3,4,*,- | \0 | \0 |
char opr[100]; //+-*/ など演算記号を PUSH します int wait[100]; //opr と対で演算記号の重みを PUSH します typedef struct { char opr; int wait; } CELL; CELL stack[100]; |