fork download
  1. #include<stdio.h>
  2.  
  3. #define SIZE 10
  4. double stack[SIZE];
  5. int sp;
  6. void push(double value);
  7. double pop(void);
  8. int isFull(void);
  9. int isEmpty(void);
  10. void answer(void);
  11. void reset(void);
  12.  
  13. int main(void)
  14. {
  15. reset();
  16. int resp;
  17. double data;
  18.  
  19. while(1){
  20. scanf("%d",&resp);
  21. if(resp==9) break;
  22.  
  23. switch(resp){
  24. case 5:scanf("%lf",&data);
  25. push(data);
  26. break;
  27. case 1:data=pop()+pop();
  28. push(data);
  29. break;
  30. case 2:data=pop()-pop();
  31. push(data);
  32. break;
  33. case 3:data=pop()*pop();
  34. push(data);
  35. break;
  36. case 4:data=pop()/pop();
  37. push(data);
  38. break;
  39. }
  40. }
  41. answer();
  42. return 0;
  43. }
  44. void push(double value)
  45. {
  46. if(isFull()){
  47. printf("スタックが満杯で入りませんでした\n");
  48. }else{
  49. stack[sp++]=value;
  50. }}
  51. double pop(void)
  52. {
  53. if(isEmpty()){
  54. printf("スタックが空で取り出せませんでした\n");
  55. return 0;
  56. }else{
  57. return stack[--sp];
  58. }
  59. }
  60. int isFull(void)
  61. {
  62. if(sp>=SIZE){
  63. return 1;
  64. }else{
  65. return 0;
  66. }
  67. }
  68. int isEmpty(void)
  69. {
  70. if(sp<=0){
  71. return 1;
  72. }else{
  73. return 0;
  74. }
  75. }
  76. void answer(void)
  77. {
  78. printf("answer:%f \n",stack[0]);
  79. }
  80. void reset(void)
  81. {
  82. sp=0;
  83. }
Success #stdin #stdout 0.01s 5276KB
stdin
5
1
5
2
1
9
stdout
answer:3.000000