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