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

answer:0.000000