fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 10
  4. double stack[SIZE];
  5. int sp;
  6.  
  7. void push(double value);
  8. double pop(void);
  9. int isFull(void);
  10. int isEmpty(void);
  11. void answer(void);
  12. void reset(void);
  13.  
  14. int main(void)
  15. {
  16. reset();
  17.  
  18. while(1) {
  19. int resp;
  20. double value, a, b;
  21.  
  22. scanf("%d", &resp);
  23.  
  24. switch(resp) {
  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(resp == 9) break;
  60. }
  61.  
  62. answer();
  63.  
  64. return 0;
  65. }
  66.  
  67. void push(double value)
  68. {
  69. if(!isFull()) {
  70. stack[sp] = value;
  71. sp++;
  72. }
  73. }
  74.  
  75. double pop(void)
  76. {
  77. if(!isEmpty()) {
  78. sp--;
  79. return stack[sp];
  80. }
  81. return 0;
  82. }
  83.  
  84. int isFull(void)
  85. {
  86. if(sp == SIZE) return 1;
  87. else return 0;
  88. }
  89.  
  90. int isEmpty(void)
  91. {
  92. if(sp == 0) return 1;
  93. else return 0;
  94. }
  95.  
  96. void answer(void)
  97. {
  98. if(!isEmpty()) {
  99. printf("\nanswer:%f\n", stack[sp-1]);
  100. }
  101. }
  102.  
  103. void reset(void)
  104. {
  105. sp = 0;
  106.  
  107. }
  108.  
Success #stdin #stdout 0s 5244KB
stdin
5
1
5
2
1
9
stdout
data:1.000000
data:2.000000

answer:3.000000