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