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