fork(1) download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 10
  4.  
  5. double stack[SIZE];
  6. int sp;
  7.  
  8. void push(double value);
  9. double pop(void);
  10. int isFull(void);
  11. int isEmpty(void);
  12. void answer(void);
  13. void reset(void);
  14.  
  15. int main(void)
  16. {
  17. double value, cal1, cal2;
  18. int resp;
  19. int dataCount = 0;
  20.  
  21. reset();
  22.  
  23. while (1) {
  24. scanf("%d", &resp);
  25.  
  26. if (resp == 9) {
  27. break;
  28. }
  29.  
  30. switch (resp) {
  31. case 1:
  32. cal1 = pop();
  33. cal2 = pop();
  34. push(cal1 + cal2);
  35. break;
  36.  
  37. case 2:
  38. cal1 = pop();
  39. cal2 = pop();
  40. push(cal2 - cal1);
  41. break;
  42.  
  43. case 3:
  44. cal1 = pop();
  45. cal2 = pop();
  46. push(cal1 * cal2);
  47. break;
  48.  
  49. case 4:
  50. cal1 = pop();
  51. cal2 = pop();
  52. push(cal2 / cal1);
  53. break;
  54.  
  55. case 5:
  56. scanf("%lf", &value);
  57. dataCount++;
  58. printf("data%d:%.6f\n", dataCount, value);
  59. push(value);
  60. break;
  61. }
  62. }
  63.  
  64. answer();
  65. return 0;
  66. }
  67. void push(double value)
  68. {
  69. if (!isFull()) {
  70. stack[sp] = value;
  71. sp++;
  72. }
  73. }
  74.  
  75. double pop(void)
  76. {
  77. if (!isEmpty()) {
  78. sp--;
  79. return stack[sp];
  80. }
  81.  
  82. return 0;
  83. }
  84.  
  85. int isFull(void)
  86. {
  87. return sp >= SIZE;
  88. }
  89.  
  90. int isEmpty(void)
  91. {
  92. return sp <= 0;
  93. }
  94.  
  95. void answer(void)
  96. {
  97. if (!isEmpty()) {
  98. printf("\nanswer:%.6f\n", stack[sp - 1]);
  99. }
  100. }
  101. void reset(void)
  102. {
  103. sp = 0;
  104. }
Success #stdin #stdout 0s 5284KB
stdin
5
1
5
2
1
9
stdout
data1:1.000000
data2:2.000000

answer:3.000000