Skip to content

Instantly share code, notes, and snippets.

@hirosof
Created September 4, 2014 12:12
Show Gist options
  • Save hirosof/c6bd1dc84e51fd4ab862 to your computer and use it in GitHub Desktop.
Save hirosof/c6bd1dc84e51fd4ab862 to your computer and use it in GitHub Desktop.
<<1024バイト以内の数式を入力してください。>>
[補足説明:';'→[Enter]入力で数式入力終了、quitでプログラム終了]
3^2(6+2) - 2^4(0.5*6+3);
<<数式解析(逆ポーランド記法への変換)の詳細のダンプ>>
入力(1文字目):3
入力(2文字目):^
出力バッファに実数の3を追加
スタックに演算子の ^ をプッシュ
入力(3文字目):2
入力(4文字目):(
出力バッファに実数の2を追加
スタックから演算子の ^ をポップ
出力バッファに演算子の ^ を追加
スタックに演算子の * をプッシュ
スタックに演算子の ( をプッシュ
入力(5文字目):6
入力(6文字目):+
出力バッファに実数の6を追加
スタックに演算子の + をプッシュ
入力(7文字目):2
入力(8文字目):)
出力バッファに実数の2を追加
スタックから演算子の + をポップ
出力バッファに演算子の + を追加
スタックから演算子の ( をポップ
入力(9文字目):空白文字または改行文字の為スキップ
入力(10文字目):-
スタックから演算子の * をポップ
出力バッファに演算子の * を追加
スタックに演算子の - をプッシュ
入力(11文字目):空白文字または改行文字の為スキップ
入力(12文字目):2
入力(13文字目):^
出力バッファに実数の2を追加
スタックに演算子の ^ をプッシュ
入力(14文字目):4
入力(15文字目):(
出力バッファに実数の4を追加
スタックから演算子の ^ をポップ
出力バッファに演算子の ^ を追加
スタックに演算子の * をプッシュ
スタックに演算子の ( をプッシュ
入力(16文字目):0
入力(17文字目):.
入力(18文字目):5
入力(19文字目):*
出力バッファに実数の0.5を追加
スタックに演算子の * をプッシュ
入力(20文字目):6
入力(21文字目):+
出力バッファに実数の6を追加
スタックから演算子の * をポップ
出力バッファに演算子の * を追加
スタックに演算子の + をプッシュ
入力(22文字目):3
入力(23文字目):)
出力バッファに実数の3を追加
スタックから演算子の + をポップ
出力バッファに演算子の + を追加
スタックから演算子の ( をポップ
スタックから演算子の * をポップ
出力バッファに演算子の * を追加
スタックから演算子の - をポップ
出力バッファに演算子の - を追加
<<逆ポーランド記法>>
3 2 ^ 6 2 + * 2 4 ^ 0.5 6 * 3 + * -
<<数式計算(逆ポーランド記法の計算)の詳細のダンプ>>
実数の 3 の入力
スタックに 3 をプッシュ(入力)
実数の 2 の入力
スタックに 2 をプッシュ(入力)
演算子の ^ の入力
スタックから 2 をポップ
スタックから 3 をポップ
スタックに 9 をプッシュ(3 ^ 2)
実数の 6 の入力
スタックに 6 をプッシュ(入力)
実数の 2 の入力
スタックに 2 をプッシュ(入力)
演算子の + の入力
スタックから 2 をポップ
スタックから 6 をポップ
スタックに 8 をプッシュ(6 + 2)
演算子の * の入力
スタックから 8 をポップ
スタックから 9 をポップ
スタックに 72 をプッシュ(9 × 8)
実数の 2 の入力
スタックに 2 をプッシュ(入力)
実数の 4 の入力
スタックに 4 をプッシュ(入力)
演算子の ^ の入力
スタックから 4 をポップ
スタックから 2 をポップ
スタックに 16 をプッシュ(2 ^ 4)
実数の 0.5 の入力
スタックに 0.5 をプッシュ(入力)
実数の 6 の入力
スタックに 6 をプッシュ(入力)
演算子の * の入力
スタックから 6 をポップ
スタックから 0.5 をポップ
スタックに 3 をプッシュ(0.5 × 6)
実数の 3 の入力
スタックに 3 をプッシュ(入力)
演算子の + の入力
スタックから 3 をポップ
スタックから 3 をポップ
スタックに 6 をプッシュ(3 + 3)
演算子の * の入力
スタックから 6 をポップ
スタックから 16 をポップ
スタックに 96 をプッシュ(16 × 6)
演算子の - の入力
スタックから 96 をポップ
スタックから 72 をポップ
スタックに -24 をプッシュ(72 - 96)
スタックから -24 をポップしてそれを呼び出し元に戻す
<<計算結果>>
-24.000000(-2.400000e+001)
<<1024バイト以内の数式を入力してください。>>
[補足説明:';'→[Enter]入力で数式入力終了、quitでプログラム終了]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment