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){int resp;
  19. double data, data1,data2;
  20. printf("1:+,2:-,3:*,4:/,5:input,9:kekka");
  21. scanf("%d",&resp);
  22. if(resp==9)break;
  23. switch(resp){
  24. case 1:
  25. data1=pop();
  26. data2=pop();
  27. push(data1+data2);
  28. break;
  29.  
  30. case 2:
  31. data1=pop();
  32. data2=pop();
  33. push(data2-data1);
  34. break;
  35.  
  36. case 3:
  37. data1=pop();
  38. data2=pop();
  39. push(data1*data2);
  40. break;
  41.  
  42. case 4:
  43. data1=pop();
  44. data2=pop();
  45. push(data2/data1);
  46. break;
  47.  
  48. case 5:
  49. scanf("%lf",&data);
  50. push(data);
  51. break;
  52. }
  53.  
  54. }
  55. answer();
  56. return 0;
  57.  
  58. }
  59. void push(double value){if(sp>=SIZE){
  60. printf("スタックが満杯で入りませんでした\n");}
  61. else{stack[sp++]=value;}
  62. }
  63. double pop(void){if(sp<=0){
  64. printf("スタックが空で取り出せませんでした\n");
  65. return 0;}
  66. else{return stack[--sp];}
  67. }
  68. int isFull(void){if(sp>=SIZE){
  69. return 1;}
  70. else{ return 0;}
  71. }
  72. int isEmpty(void){if(sp<=0){return 1;}
  73. else{ return 0;}
  74. }
  75. void answer(void){printf("answer%lf\n",stack[sp-1]);
  76. }
  77. void reset(void){sp=0;
  78. }
  79.  
Success #stdin #stdout 0.01s 5312KB
stdin
5
1
5
2
1
9
stdout
1:+,2:-,3:*,4:/,5:input,9:kekka1:+,2:-,3:*,4:/,5:input,9:kekka1:+,2:-,3:*,4:/,5:input,9:kekka1:+,2:-,3:*,4:/,5:input,9:kekkaanswer3.000000