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



stdout