fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 10
  4. double stack[SIZE];
  5. int sp;
  6.  
  7. void push(double value);
  8. double pop(void);
  9. int isFull(void);
  10. int isEmpty(void);
  11. void answer(void);
  12. void reset(void);
  13.  
  14.  
  15. int main(void) {
  16. reset();
  17.  
  18. while(1){
  19. int code;
  20. double a, b;
  21. scanf("%d", &code);
  22.  
  23.  
  24. switch(code){
  25. case 5:
  26. scanf("%lf",&a);
  27. push(a);
  28. printf("data:%f\n", a);
  29. break;
  30.  
  31. case 1:
  32. b = pop();
  33. a = pop();
  34. push(a + b);
  35. break;
  36.  
  37. case 2:
  38. b = pop();
  39. a = pop();
  40. push(a - b);
  41. break;
  42.  
  43. case 3:
  44. b = pop();
  45. a = pop();
  46. push(a * b);
  47. break;
  48.  
  49. case 4:
  50. b = pop();
  51. a = pop();
  52. push(a / b);
  53. break;
  54.  
  55. case 9:
  56. answer();
  57. return 0;
  58. }
  59. }
  60. }
  61.  
  62.  
  63.  
  64. void reset(void)
  65. {
  66. sp = 0;
  67. }
  68.  
  69. void push(double value)
  70. {
  71. if(!isFull()){
  72. stack[sp++] = value;
  73. }
  74. }
  75.  
  76. double pop(void)
  77. {
  78. if(!isEmpty()){
  79. return stack[--sp];
  80. }
  81. return 0;
  82. }
  83.  
  84. int isFull(void)
  85. {
  86. return sp >= SIZE;
  87. }
  88.  
  89. int isEmpty(void)
  90. {
  91. return sp <= 0;
  92. }
  93.  
  94. void answer(void)
  95. {
  96. if(!isEmpty()){
  97. printf("answer:%f\n",stack[sp-1]);
  98. }
  99. }
Success #stdin #stdout 0.01s 5308KB
stdin
5 1 5 2 1 9
stdout
data:1.000000
data:2.000000
answer:3.000000