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

answer:3.000000