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