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

answer:3.000000