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

answer:3.000000