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