Tedd OKANO
/
RPN_calc__based_on_K_and_R
just a sample of what can be done
PRN電卓プログラム
「プログラミング言語C (K&R本)」に出てくる例を元にした,RPN計算機です.
写真はイメージです
このプログラムは..
- 『mbed祭り 2015@初夏の東銀座』の親睦会で「RPN」と題して行ったLT(LightningTalk)でのデモ・プログラムです.
- mbed LPC1768,mbed LPC1114FN28で実行できることを確認しています(たぶん他のプラットフォームでも動きます)
- プレゼンスライドを置いておきます
stack.cpp@3:4ef74510cc5b, 2015-06-26 (annotated)
- Committer:
- okano
- Date:
- Fri Jun 26 11:01:35 2015 +0000
- Revision:
- 3:4ef74510cc5b
- Parent:
- 2:0e96f4495b43
- Child:
- 4:b4c8aee2ecad
displaying stack by hitting [Enter] and operators
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okano | 2:0e96f4495b43 | 1 | #include "mbed.h" |
okano | 2:0e96f4495b43 | 2 | #include "calc.h" |
okano | 2:0e96f4495b43 | 3 | |
okano | 2:0e96f4495b43 | 4 | #define MAXVAL 100 |
okano | 2:0e96f4495b43 | 5 | |
okano | 2:0e96f4495b43 | 6 | int sp = 0; |
okano | 2:0e96f4495b43 | 7 | double val[ MAXVAL ]; |
okano | 2:0e96f4495b43 | 8 | |
okano | 2:0e96f4495b43 | 9 | void push( double f ) |
okano | 2:0e96f4495b43 | 10 | { |
okano | 2:0e96f4495b43 | 11 | if ( sp < MAXVAL ) |
okano | 2:0e96f4495b43 | 12 | val[ sp++ ] = f; |
okano | 2:0e96f4495b43 | 13 | else |
okano | 2:0e96f4495b43 | 14 | printf( "error: stack full, can't push %g\n", f ); |
okano | 2:0e96f4495b43 | 15 | } |
okano | 2:0e96f4495b43 | 16 | |
okano | 2:0e96f4495b43 | 17 | |
okano | 2:0e96f4495b43 | 18 | double pop( void ) |
okano | 2:0e96f4495b43 | 19 | { |
okano | 2:0e96f4495b43 | 20 | if ( sp > 0 ) |
okano | 2:0e96f4495b43 | 21 | return val[ --sp ]; |
okano | 2:0e96f4495b43 | 22 | else { |
okano | 2:0e96f4495b43 | 23 | printf( "error: stack empty\n" ); |
okano | 2:0e96f4495b43 | 24 | return 0.0; |
okano | 2:0e96f4495b43 | 25 | } |
okano | 2:0e96f4495b43 | 26 | } |
okano | 3:4ef74510cc5b | 27 | |
okano | 3:4ef74510cc5b | 28 | void show_stack( void ) |
okano | 3:4ef74510cc5b | 29 | { |
okano | 3:4ef74510cc5b | 30 | for ( int i = 0; i < sp; i++ ) |
okano | 3:4ef74510cc5b | 31 | printf( "%3d: %f\n", i, val[ i ] ); |
okano | 3:4ef74510cc5b | 32 | } |