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