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