Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define STACK 50
- char parse(int*);
- void push(int*, int*, int);
- int pop(int*,int*);
- int main() {
- int vals[STACK];
- int pos=-1;
- char func[5];
- int value;
- char code;
- int i=0;
- while (1)
- {
- code = parse(&value);
- }
- switch(code)
- {
- case '+':
- push(vals, *pos, pop(vals, *pos)+pop(vals, *pos));
- break;
- case '-':
- push(vals, *pos,pop(vals, *pos-1)-pop(vals, *pos));
- break;
- case '*':
- push(vals, *pos,pop(vals,*pos)*pop(vals,*pos-1));
- break;
- case '/':
- push(vals, *pos,pop(vals,*pos-1)/pop(vals,*pos));
- break;
- case 'c':
- push(vals, *pos,-pop(vals,*pos));
- break;
- case 'n':
- push(vals, *pos, value);
- case 'h':
- for(i;i=<pos;++i)
- printf("%x\n"vals(i));
- case 'o':
- for (i;i=<pos;++i)
- printf("%o\n",vals(i));
- case '&':
- push(vals,*pos,pop(vals,*pos) & pop(vals,*pos));
- break;
- case '|':
- push(vals,*pos,pop(vals,*pos) | pop(vals,*pos));
- break;
- case '^':
- push(vals,*pos,pop(vals,*pos) ^ pop(vals, *pos));
- break;
- case '~':
- push(vals,*pos,~pop(vals,*pos));
- break;
- case '>':
- push(vals,*pos,pop(vals,*pos)>>pop(vals,*pos));
- break;
- case '<':
- push(vals,*pos,pop(vals,*pos)<<pop(vals,*pos));
- break;
- case 'q':
- printf("%d",vals);
- return 0;
- }
- }
- void push(int* stack,int* pos, int inp){
- if (*pos > STACK)
- printf("Stack filled\n");
- else
- *pos = *pos + 1;
- stack[*pos] = inp;
- }
- int pop(int *stack, int *pos)
- {
- int retval;
- if (*pos < 0)
- printf("Nothing on stack!\n");
- retval = stack[*pos];
- *pos = *pos - 1;
- return retval;
- }
- char parse(int *valueptr){
- char buffer[80];
- fgets(buffer, 80, stdin);
- switch(buffer[0])
- {
- case '+':
- case '-':
- case '*':
- case '/':
- case 'h':
- case 'o':
- case 'd':
- case 'c':
- case '&':
- case '|':
- case '^':
- case '~':
- case '>':
- case '<':
- case 'q':
- return buffer[0];
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- *valueptr = strtol(buffer, NULL, 10);
- return 'n';
- default:
- printf("Lol wut? Try again\n");
- printf("+ - * / h o d c & | ^ ~ > < q And valid integers dude\n");
- }
- }
Add Comment
Please, Sign In to add comment