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で実行できることを確認しています(たぶん他のプラットフォームでも動きます)
- プレゼンスライドを置いておきます
main.cpp
- Committer:
- okano
- Date:
- 2015-06-27
- Revision:
- 5:3b9daee5f734
- Parent:
- 3:4ef74510cc5b
File content as of revision 5:3b9daee5f734:
#include "mbed.h" #include "calc.h" #define MAXOP 100 int main() { int type; double op2; char s[ MAXOP ]; int stack_dump; while ( (type = getop( s )) != EOF ) { stack_dump = 1; switch( type ) { case NUMBER: push( atof( s ) ); stack_dump = 0; break; case '+': push( pop() + pop() ); break; case '*': push( pop() * pop() ); break; case '-': op2 = pop(); push( pop() - op2 ); break; case '/': op2 = pop(); if ( op2 != 0.0 ) push( pop() / op2 ); else { printf( "error: zero divisor\n" ); stack_dump = 0; } break; case 'p': op2 = pop(); push( pow( pop(), op2 ) ); break; case 'd': pop(); break; case '\n': break; case 0x0D: // just ignore stack_dump = 0; break; default: printf( "error: unknown command %s (0x%02X)\n", s, *s ); stack_dump = 0; break; } if ( stack_dump ) show_stack(); } }