Guest User

Untitled

a guest
Dec 11th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. #define STACK 50
  2. char parse(int*);
  3. void push(int*, int*, int);
  4. int pop(int*,int*);
  5.  
  6. int main() {
  7. int vals[STACK];
  8. int pos=-1;
  9. char func[5];
  10. int value;
  11. char code;
  12. int i=0;
  13. while (1)
  14. {
  15. code = parse(&value);
  16. }
  17.  
  18. switch(code)
  19. {
  20. case '+':
  21. push(vals, *pos, pop(vals, *pos)+pop(vals, *pos));
  22. break;
  23. case '-':
  24. push(vals, *pos,pop(vals, *pos-1)-pop(vals, *pos));
  25. break;
  26. case '*':
  27. push(vals, *pos,pop(vals,*pos)*pop(vals,*pos-1));
  28. break;
  29. case '/':
  30. push(vals, *pos,pop(vals,*pos-1)/pop(vals,*pos));
  31. break;
  32. case 'c':
  33. push(vals, *pos,-pop(vals,*pos));
  34. break;
  35. case 'n':
  36. push(vals, *pos, value);
  37. case 'h':
  38. for(i;i=<pos;++i)
  39. printf("%x\n"vals(i));
  40. case 'o':
  41. for (i;i=<pos;++i)
  42. printf("%o\n",vals(i));
  43. case '&':
  44. push(vals,*pos,pop(vals,*pos) & pop(vals,*pos));
  45. break;
  46. case '|':
  47. push(vals,*pos,pop(vals,*pos) | pop(vals,*pos));
  48. break;
  49. case '^':
  50. push(vals,*pos,pop(vals,*pos) ^ pop(vals, *pos));
  51. break;
  52. case '~':
  53. push(vals,*pos,~pop(vals,*pos));
  54. break;
  55. case '>':
  56. push(vals,*pos,pop(vals,*pos)>>pop(vals,*pos));
  57. break;
  58. case '<':
  59. push(vals,*pos,pop(vals,*pos)<<pop(vals,*pos));
  60. break;
  61. case 'q':
  62. printf("%d",vals);
  63. return 0;
  64. }
  65. }
  66. void push(int* stack,int* pos, int inp){
  67. if (*pos > STACK)
  68. printf("Stack filled\n");
  69. else
  70. *pos = *pos + 1;
  71. stack[*pos] = inp;
  72. }
  73. int pop(int *stack, int *pos)
  74. {
  75. int retval;
  76. if (*pos < 0)
  77. printf("Nothing on stack!\n");
  78. retval = stack[*pos];
  79. *pos = *pos - 1;
  80. return retval;
  81. }
  82.  
  83. char parse(int *valueptr){
  84. char buffer[80];
  85. fgets(buffer, 80, stdin);
  86. switch(buffer[0])
  87. {
  88. case '+':
  89. case '-':
  90. case '*':
  91. case '/':
  92. case 'h':
  93. case 'o':
  94. case 'd':
  95. case 'c':
  96. case '&':
  97. case '|':
  98. case '^':
  99. case '~':
  100. case '>':
  101. case '<':
  102. case 'q':
  103. return buffer[0];
  104. case '0':
  105. case '1':
  106. case '2':
  107. case '3':
  108. case '4':
  109. case '5':
  110. case '6':
  111. case '7':
  112. case '8':
  113. case '9':
  114. *valueptr = strtol(buffer, NULL, 10);
  115. return 'n';
  116. default:
  117. printf("Lol wut? Try again\n");
  118. printf("+ - * / h o d c & | ^ ~ > < q And valid integers dude\n");
  119. }
  120.  
  121. }
Add Comment
Please, Sign In to add comment