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