fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 5
  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. {
  17. sp = 0;
  18.  
  19. while(1){
  20. int resp;
  21. double data;
  22.  
  23. printf("1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了\n");
  24. scanf("%d",&resp);
  25.  
  26. if(!resp) break;
  27.  
  28. switch(resp){
  29. case 1:
  30. {
  31. double b = pop();
  32. double a = pop();
  33. push(a + b);
  34. break;
  35. }
  36.  
  37. case 2:
  38. {
  39. double b = pop();
  40. double a = pop();
  41. push(a - b);
  42. break;
  43. }
  44.  
  45. case 3:
  46. {
  47. double b = pop();
  48. double a = pop();
  49. push(a * b);
  50. break;
  51. }
  52.  
  53. case 4:
  54. {
  55. double b = pop();
  56. double a = pop();
  57. push(a / b);
  58. break;
  59. }
  60.  
  61. case 5:
  62. printf("データ入力:\n");
  63. scanf("%lf",&data);
  64. push(data);
  65. break;
  66.  
  67. case 9:
  68. answer();
  69. break;
  70.  
  71. case 0:
  72. reset();
  73. break;
  74.  
  75. default:
  76. printf("入力が間違っています\n");
  77. }
  78. printf("\n");
  79. }
  80.  
  81. return 0;
  82. }
  83.  
  84. void push(double value)
  85. {
  86. if(!isFull()){
  87. stack[sp] = value;
  88. sp++;
  89. }
  90. }
  91.  
  92. double pop(void)
  93. {
  94. if(!isEmpty()){
  95. sp--;
  96. return stack[sp];
  97. }
  98. return 0;
  99. }
  100.  
  101. int isFull(void)
  102. {
  103. return sp >= SIZE;
  104. }
  105.  
  106. int isEmpty(void)
  107. {
  108. return sp <= 0;
  109. }
  110.  
  111. void answer(void)
  112. {
  113. if(sp == 1){
  114. printf("答え = %lf\n", stack[0]);
  115. }
  116. else{
  117. printf("計算結果を表示できません\n");
  118. }
  119. }
  120.  
  121. void reset(void)
  122. {
  123. sp = 0;
  124. }
Success #stdin #stdout 0s 5264KB
stdin
5
4
5
24
1
9
0
stdout
1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了
データ入力:

1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了
データ入力:

1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了

1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了
答え = 28.000000

1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了