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