fork(1) download
  1. #include<stdio.h>
  2.  
  3. #define SIZE 10
  4. int 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. while(1){
  18. int resp;
  19. double data,cal1,cal2;
  20. scanf("%d", &resp);
  21. if(resp == 9)break;
  22. switch(resp){
  23. case 1: cal1 = pop();
  24. cal2 = pop();
  25. push(cal2 + cal1);
  26. break;
  27. case 2: cal1 = pop();
  28. cal2 = pop();
  29. push(cal2 - cal1);
  30. break;
  31. case 3: cal1 = pop();
  32. cal2 = pop();
  33. push(cal2 * cal1);
  34. break;
  35. case 4: cal1 = pop();
  36. cal2 = pop();
  37. push(cal2 / cal1);
  38. break;
  39. case 5: scanf("%lf", &data);
  40. printf("data:%f\n", data);
  41. push(data);
  42. break;
  43. }
  44. }
  45.  
  46. answer();
  47. return 0;
  48. }
  49.  
  50. void push(double value){
  51. if(isFull()==1){
  52. printf("一杯です");
  53. }else{
  54. stack[sp++] = value;
  55. }
  56. }
  57. double pop(void){
  58. if(isEmpty()==1){
  59. printf("空です");
  60. return 0;
  61. }else{
  62. return stack[--sp];
  63. }
  64. }
  65. int isFull(void){
  66. if(sp >= SIZE)return 1;
  67. else return 0;
  68. }
  69. int isEmpty(void){
  70. if(sp <= 0)return 1;
  71. else return 0;
  72. }
  73. void answer(void){
  74. printf("answer:%f", pop());
  75. }
  76. void reset(void){
  77. sp = 0;
  78. }
Success #stdin #stdout 0s 5280KB
stdin
5 1 5 2 1 9
stdout
data:1.000000
data:2.000000
answer:3.000000