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