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