just a sample of what can be done

Dependencies:   mbed

PRN電卓プログラム

「プログラミング言語C (K&R本)」に出てくる例を元にした,RPN計算機です.

hp写真はイメージです

このプログラムは..

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();
    }
}