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