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