rendered paste body#include <stdio.h>#include <string.h>#define SIZE 100int stack[SIZE];int *start=stack;int *point=stack;int main() { char tmp; int a; int b; int temp; char string[100]; tmp=getchar(); while (!feof(stdin)) { switch(tmp) { case '+': if(strcmp(string, "")) push(atoi(string)); sprintf(string, ""); push(pop()+pop()); break; case '-': if(strcmp(string, "")) push(atoi(string)); sprintf(string, ""); a=pop(); b=pop(); push(b-a); break; case '*': if(strcmp(string, "")) push(atoi(string)); sprintf(string, ""); push(pop()*pop()); break; case '/': if(strcmp(string, "")) push(atoi(string)); a=pop(); b=pop(); sprintf(string, ""); push(b/a); break; case 'p': temp=pop(); printf("%i\n", temp); push(temp); break; case 'n': printf("%i\n", pop()); break; case 'q': exit(0); case ' ': if(strcmp(string, "")) push(atoi(string)); sprintf(string, ""); break; case '\n': if(strcmp(string, "")) push(atoi(string)); sprintf(string, ""); break; default: snprintf(string, 100, "%s%c", string, tmp); break; } tmp=getchar(); }}int push(int num) { if((start+SIZE)!=(point++)) { *point=num; return *point; } else { printf("Stack overflow.\n"); return(1); }}int pop() { if(point!=start) { int tmp=*point; *point=0; point--; return(tmp); } else { int tmp=*point; *point=0; return(tmp); }}