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