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