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