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. double data, result;
  14.  
  15. int main(void)
  16. {
  17. reset();
  18. int choice;
  19. while(1){
  20. //1:足し算 2:引き算 3:掛け算 4:割り算 5:データ入力 9:結果
  21. scanf("%d", &choice);
  22.  
  23. if(!choice) break;
  24.  
  25. switch(choice){
  26. case 1: push(pop() + pop());
  27. break;
  28.  
  29. case 2: push(pop() - pop());
  30. break;
  31.  
  32. case 3: push(pop() * pop());
  33. break;
  34.  
  35. case 4: push(pop() / pop());
  36. break;
  37.  
  38. case 5: scanf("%lf", &data);
  39. printf("data:%lf\n", data);
  40. push(data);
  41. break;
  42.  
  43. case 9: answer();
  44. return 0;
  45. break;
  46.  
  47. default:
  48. printf("決められた値を入力しなさい\n");
  49. break;
  50. }
  51.  
  52. }
  53. return 0;
  54. }
  55.  
  56. void push(double value)
  57. {
  58. if(isFull()){
  59. printf("スタックが満杯\n");
  60. }
  61.  
  62. else{
  63. stack[sp++] = value;
  64. }
  65. }
  66.  
  67. double pop(void)
  68. {
  69. if(isEmpty()){
  70. printf("スタックが空\n");
  71. return 0;
  72. }
  73.  
  74. else{
  75. return stack[--sp];
  76. }
  77. }
  78.  
  79. int isFull(void)
  80. {
  81. return 0;
  82. }
  83.  
  84. int isEmpty(void)
  85. {
  86. return 0;
  87. }
  88.  
  89. void answer(void)
  90. {
  91. printf("answer:%lf\n", pop());
  92. }
  93.  
  94. void reset(void)
  95. {
  96. sp = 0;
  97. }
Success #stdin #stdout 0s 5288KB
stdin
5
1
5
2
1
9
stdout
data:1.000000
data:2.000000
answer:3.000000