Professional Documents
Culture Documents
* RPN calculator
* Only works with single digit inputs.
* Example input: 12+
* Output: 3
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int pop()
{
assert(sp > 0);
return stack[sp--];
}
int top()
{
assert(sp > 0);
return stack[sp];
}
void push(int n)
{
assert(sp < STACK_SIZE -1);
stack[++sp] = n;
}
switch (c) {
case '+':
a = pop();
b = pop();
push(a + b);
break;
case '-':
a = pop();
b = pop();
push(b - a);
break;
case '*':
a = pop();
b = pop();
push(a * b);
break;
case EOF:
// Terminate on CTRL-D
printf("= %d\n", top());
exit(0);
break;
case '\n':
printf("= %d\n", top());
break;
default:
push(c - '0'); // Push ASCII character as integer
}
}
return 0;
}