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