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