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

answer:3.000000