fork download
  1. #include<stdio.h>
  2. #define SIZE 10
  3. double stack[SIZE];
  4. int sp;
  5.  
  6. void push(double value);
  7. double pop(void);
  8. int isFull(void);
  9. int isEmpty(void);
  10. void answer(void);
  11. void reset(void);
  12.  
  13. int main(void)
  14. { int resp;
  15. double u1,u2,result,data;
  16. printf("足し算:1,引き算:2,掛け算:3,割り算:4,データ入力:5,計算結果の表示:9");
  17. while(1){
  18. scanf("%d",&resp);
  19. if(resp==0) break;
  20.  
  21. switch(resp){
  22. case 1: if(sp>=2){
  23. u2=pop();
  24. u1=pop();
  25. result=u1+u2;
  26. push(result);
  27. }else{
  28. printf("値を入力してください");
  29. }
  30. break;
  31.  
  32. case 2: if(sp>=2){
  33. u2=pop();
  34. u1=pop();
  35. result=u1-u2;
  36. push(result);
  37. }else{
  38. printf("値を入力してください");
  39. }
  40. break;
  41.  
  42. case 3: if(sp>=2){
  43. u2=pop();
  44. u1=pop();
  45. result=u1*u2;
  46. push(result);
  47. }else{
  48. printf("値を入力してください");
  49. }
  50. break;
  51.  
  52. case 4: if(sp>=2){
  53. u2=pop();
  54. u1=pop();
  55. if(u2!=0){
  56. result=u1/u2;
  57. push(result);
  58. }else{
  59. printf("0で割ることはできません");
  60. }
  61. }else{
  62. printf("値を入力してください");
  63. }
  64. break;
  65.  
  66. case 5:
  67. scanf("%lf",&data);
  68. push(data);
  69. break;
  70.  
  71.  
  72. case 9:
  73. answer();
  74. return 0;
  75.  
  76. }
  77.  
  78. }
  79.  
  80.  
  81.  
  82. }
  83. void push(double value){
  84. if( isFull() ){
  85. printf("スタックが満杯で入りませんでした");
  86. }else{
  87. stack[sp++]=value;
  88. }
  89. }
  90. double pop(void){
  91. if( isEmpty() ){
  92. printf("スタックが空で取り出せませんでした");
  93. return 0;
  94. }else{
  95. return stack[--sp];
  96. }
  97. }
  98. int isFull(void){
  99. if(sp>=SIZE){
  100. return 1;
  101. }else {
  102. return 0;
  103. }
  104.  
  105. }
  106. int isEmpty(void){
  107. if(sp<=0){
  108. return 1;
  109. } else{
  110. return 0;
  111. }
  112. }
  113. void answer(void){
  114. if(!isEmpty()){
  115. printf("結果:%lf\n",stack[sp-1]);
  116. }else{
  117. printf("中身は空です\n");
  118. }
  119. }
  120. void reset(void){
  121. sp=0;
  122. }
Success #stdin #stdout 0s 5308KB
stdin
5
1
5
2
1
9
stdout
足し算:1,引き算:2,掛け算:3,割り算:4,データ入力:5,計算結果の表示:9結果:3.000000