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