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. {
  16. int resp;
  17. double cal1,cal2, date;
  18. reset();
  19. while(1){
  20. printf("1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示\n");
  21. scanf("%d", &resp);
  22. switch(resp){
  23. case 1:
  24. cal1 = pop();
  25. cal2 = pop();
  26. push(cal2+cal1);
  27. break;
  28.  
  29. case 2:
  30. cal1 = pop();
  31. cal2 = pop();
  32. push(cal2-cal1);
  33. break;
  34.  
  35. case 3:
  36. cal1 = pop();
  37. cal2 = pop();
  38. push(cal2*cal1);
  39. break;
  40.  
  41. case 4:
  42. cal1 = pop();
  43. cal2 = pop();
  44. push(cal2/cal1);
  45. break;
  46.  
  47. case 5:
  48. printf("データ=");
  49. scanf("%lf", &date);
  50. push(date);
  51. break;
  52.  
  53. case 9:
  54. answer();
  55. return 0;
  56. }
  57. }
  58.  
  59. answer();
  60.  
  61. return 0;
  62. }
  63.  
  64. void push(double value)
  65. {
  66. if(isFull()){
  67. printf("スタックが満杯です\n");
  68. return;
  69. }
  70.  
  71. stack[sp] = value;
  72. sp++;
  73. }
  74.  
  75. double pop(void)
  76. {
  77. if(isEmpty()){
  78. printf("スタックが空です\n");
  79. return 0;
  80. }
  81.  
  82. sp--;
  83. return stack[sp];
  84. }
  85.  
  86. int isFull(void)
  87. {
  88. if(sp >= SIZE){
  89. return 1;
  90. }else{
  91. return 0;
  92. }
  93. }
  94.  
  95. int isEmpty(void)
  96. {
  97. if(sp == 0){
  98. return 1;
  99. }else{
  100. return 0;
  101. }
  102. }
  103.  
  104. void answer(void)
  105. {
  106. if(isEmpty()){
  107. printf("データがありません\n");
  108. }else{
  109. printf("計算結果 = %.2f\n", stack[sp-1]);
  110. }
  111. }
  112.  
  113. void reset(void)
  114. {
  115. sp = 0;
  116. }
  117.  
Success #stdin #stdout 0s 5316KB
stdin
5
1
5
2
1
9
stdout
1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示
データ=1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示
データ=1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示
1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示
計算結果 = 3.00