fork download
  1. #include<stdio.h>
  2.  
  3. #define SIZE 10
  4. double stack[SIZE];
  5. int sp=0;
  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.  
  19. while(1)
  20. {
  21. int a;
  22. scanf("%d",&a);
  23. double b;
  24. switch(a){
  25. case 1: if(sp<=0){
  26. isEmpty();
  27. }else{
  28. stack[sp++]=pop()+pop();
  29. }
  30. break;
  31. case 2: if(sp<=0){
  32. isEmpty();
  33. }else{
  34. stack[sp++]=pop()-pop();
  35. }
  36. break;
  37. case 3: if(sp<=0){
  38. isEmpty();
  39. }else{
  40. stack[sp++]=pop()*pop();
  41. }
  42. break;
  43. case 4: if(sp<=0){
  44. isEmpty();
  45. }else{
  46. stack[sp++]=pop()/pop();
  47. }
  48. break;
  49. case 5: if(sp==SIZE){
  50. isFull();
  51. }else{
  52. scanf("%f",&b);
  53. push(b);
  54. }
  55. printf("%f\n",stack[0]);
  56. break;
  57. case 9: break;
  58. }
  59.  
  60. if(a==9)break;
  61. }
  62.  
  63. answer();
  64.  
  65. return 0;
  66. }
  67.  
  68. void push(double value)
  69. {
  70. stack[sp++]=value;
  71.  
  72. }
  73.  
  74. double pop(void)
  75. {
  76. sp--;
  77. return stack[sp];
  78. }
  79.  
  80. int isFull(void)
  81. {
  82. if(sp>=SIZE)
  83. {
  84. printf("スタックが満杯で入りませんでした\n");
  85. }
  86. }
  87.  
  88. int isEmpty(void)
  89. {
  90. if(sp<=0)
  91. {
  92. printf("スタックが空で取り出せませんでした\n");
  93. }
  94. }
  95.  
  96. void answer(void)
  97. {
  98. printf("%f",stack[sp--]);
  99. }
  100.  
  101. void reset(void)
  102. {
  103. int i;
  104. for(i=SIZE;i>=0;i--)
  105. {
  106. stack[i]=0;
  107. }
  108. }
  109.  
Success #stdin #stdout 0s 5284KB
stdin
5
1
5
2
1
9
stdout
0.000000
0.000000
0.000000