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. reset();
  17. while(1){
  18. int resp;
  19. double a,b;
  20. scanf("%d",&resp);
  21. switch(resp){
  22. case 1:a=pop();
  23. b=pop();
  24. push(a+b);
  25. break;
  26. case 2:b=pop();
  27. a=pop();
  28. push(a-b);
  29. break;
  30. case 3:a=pop();
  31. b=pop();
  32. push(a*b);
  33. break;
  34. case 4:b=pop();
  35. a=pop();
  36. push(a/b);
  37. if(b==0) printf("0で割ることはできません");
  38. break;
  39. case 5:{
  40. double value;
  41. scanf("%lf",&value);
  42. printf("data:%lf\n",value);
  43. push(value);
  44. break;
  45. }
  46. case 9:answer();
  47. return 0;
  48. }
  49. }
  50. return 0;
  51. }
  52. void push(double value){
  53. if(SIZE>sp){
  54. stack[sp++]=value;
  55. }
  56. }
  57. double pop(void){
  58. if(sp>0)
  59. return stack[--sp];
  60. }
  61. int isFull(void){
  62. if(SIZE<=sp){
  63. printf("スタックは満杯です\n");
  64. }
  65. }
  66. int isEmpty(void){
  67. if(sp<=0){
  68. printf("スタックは空です\n");
  69. }
  70. }
  71. void answer(void){
  72. printf("answer:%f",pop());
  73. }
  74. void reset(void){
  75. sp=0;
  76. }
Success #stdin #stdout 0.01s 5264KB
stdin
5
1
5
2
1
9
stdout
data:1.000000
data:2.000000
answer:3.000000