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