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