fork(1) download
  1. #include <stdio.h>
  2.  
  3. int nextval() {
  4. return getchar() - '0';
  5. }
  6.  
  7. char nextop() {
  8. int c = getchar();
  9. if(c == '\n' || c == EOF)
  10. return '\0';
  11. else
  12. return (char) c;
  13. }
  14.  
  15. int calculate(int val1, char op, int val2, char op2) {
  16. if(op2 == '\0') { // 연산이 더 없는 경우
  17. if(op == '+') {
  18. return val1 + val2;
  19. } else if(op == '*') {
  20. return val1 * val2;
  21. }
  22. } else {
  23. int nval = nextval();
  24. char nop = nextop();
  25. if(op == '*') { // 순서대로 하면 되는 곱셈
  26. return calculate(val1 * val2, op2, nval, nop);
  27. } else if(op == '+' && op2 == '*') { // 두번째 연산자가 우선순위가 높은 경우
  28. return val1 + calculate(val2, op2, nval, nop);
  29. } else if(op == '+') { // 순서대로 하면 되는 덧셈
  30. return calculate(val1 + val2, op2, nval, nop);
  31. }
  32. }
  33. }
  34.  
  35. int main() {
  36. int val1 = nextval();
  37. char op1 = nextop();
  38. int val2 = nextval();
  39. char op2 = nextop();
  40. printf("Result: %d\n", calculate(val1, op1, val2, op2));
  41. return 0;
  42. }
Success #stdin #stdout 0s 3144KB
stdin
1+2*3+5*7+9
stdout
Result: 51