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