fork download
  1.  
  2. #include <stdio.h>
  3.  
  4. #define SIZE 10
  5.  
  6. double stack[SIZE];
  7. int top = 0;
  8.  
  9. void push(double value)
  10. {
  11. if(top == SIZE){
  12. printf("Stack is full\n");
  13. return;
  14. }
  15.  
  16. stack[top] = value;
  17. top++;
  18. }
  19.  
  20. double pop(void)
  21. {
  22. if(top == 0){
  23. printf("Stack is empty\n");
  24. return 0;
  25. }
  26.  
  27. top--;
  28. return stack[top];
  29. }
  30.  
  31. void showAnswer(void)
  32. {
  33. int i;
  34. double sum = 0;
  35.  
  36. if(top == 0){
  37. printf("Stack is empty\n");
  38. return;
  39. }
  40.  
  41. for(i = 0; i < top; i++){
  42. printf("Data %d: %g\n", i + 1, stack[i]);
  43. sum += stack[i];
  44. }
  45.  
  46. printf("Answer %g\n", sum);
  47. }
  48.  
  49. int main(void)
  50. {
  51. int command;
  52. double data;
  53. double a, b;
  54.  
  55. while(1){
  56.  
  57.  
  58.  
  59. if(scanf("%d", &command) != 1){
  60. printf("Invalid input\n");
  61. break;
  62. }
  63.  
  64. if(command == 0){
  65. break;
  66. }
  67.  
  68. switch(command){
  69.  
  70. case 1:
  71. if(top < 2){
  72. printf("Not enough data in stack\n");
  73. break;
  74. }
  75.  
  76. b = pop();
  77. a = pop();
  78. push(a + b);
  79. break;
  80.  
  81. case 2:
  82. if(top < 2){
  83. printf("Not enough data in stack\n");
  84. break;
  85. }
  86.  
  87. b = pop();
  88. a = pop();
  89. push(a - b);
  90. break;
  91.  
  92. case 3:
  93. if(top < 2){
  94. printf("Not enough data in stack\n");
  95. break;
  96. }
  97.  
  98. b = pop();
  99. a = pop();
  100. push(a * b);
  101. break;
  102.  
  103. case 4:
  104. if(top < 2){
  105. printf("Not enough data in stack\n");
  106. break;
  107. }
  108.  
  109. b = pop();
  110. a = pop();
  111.  
  112. if(b == 0){
  113. printf("Cannot divide by zero\n");
  114. push(a);
  115. push(b);
  116. break;
  117. }
  118.  
  119. push(a / b);
  120. break;
  121.  
  122. case 5:
  123.  
  124.  
  125. if(scanf("%lf", &data) != 1){
  126. printf("Invalid input\n");
  127. return 1;
  128. }
  129.  
  130. push(data);
  131. break;
  132.  
  133. case 9:
  134. showAnswer();
  135. break;
  136.  
  137. default:
  138. printf("Invalid command\n");
  139. break;
  140. }
  141. }
  142.  
  143. return 0;
  144. }
  145.  
Success #stdin #stdout 0s 5320KB
stdin
5
1
5
2
1
9
stdout
Data 1: 3
Answer 3
Invalid input