あっれぇ?
なぜか前回間に合わなかったはずの61,62,63の課題が受理されてる...why?(д
でもN A Z E K A、61がn...why?(д
62と63を合わせて作ったので62,63がokなら61もokだと思うのだが...why?(д
と言うわけで次回はシェルの創り方のお話があるらしい。fork & exec?
今回の課題!!
スタックとキューの課題!!
課題81
逆ポーランド法の電卓をつくる。
for( /* すべての引数 */ ) { switch( /* 引数の一文字目 */ ) { case '0': . . . case '9': push( atoi( /* 引数 */ ) ); break; case '+': push( pop() + pop() ); break; case '-': t = pop(); push( pop() - t ); break; } }
最後にstack[0]の値を出力
% a.out 10 5 + 6 -
乗算/除算はいらんらしいです。
あと「正しい入力」に対して正しい出力をすればいい、つまりエラー処理はしなくていいそうです。(理由:面倒くさいから
おまけ
linuxにはbcちゅーコマンドがあって、逆ポーランド法計算ができます、
ちなみに筆者お気に入りのツールの一つ。
よく課題に使う(w
例えばプログラムの出力が数字の羅列だったりしたときに、逆ポーランドだとそのまま後ろに+++++++...と続けるだけで和が出せたりと便利。