Advertisement
astanchev

X Expression

Aug 31st, 2019
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. function xExpression(expression) {
  2.  
  3. let index = 0;
  4. let symbol = expression[index];
  5. let rezult = 0;
  6. let expressionOperator = '+';
  7.  
  8. while (symbol != '=') {
  9. if (symbol == '(') {
  10. let innerResult = 0.0;
  11. let innerOperator = '+';
  12. symbol = expression[++index];
  13.  
  14. while (symbol != ')') {
  15. if (0 <= symbol - '0' && symbol - '0' <= 9) {
  16. switch (innerOperator) {
  17. case '+':
  18. innerResult += symbol - '0';
  19. break;
  20. case '-':
  21. innerResult -= symbol - '0';
  22. break;
  23. case '/':
  24. innerResult /= symbol - '0';
  25. break;
  26. case '*':
  27. innerResult *= symbol - '0';
  28. break;
  29. default:
  30. break;
  31. }
  32. } else if (symbol == '+' || symbol == '-' || symbol == '/' || symbol == '*') {
  33. innerOperator = symbol;
  34. }
  35. symbol = expression[++index];
  36. }
  37.  
  38. switch (expressionOperator) {
  39. case '+':
  40. rezult += innerResult;
  41. break;
  42. case '-':
  43. rezult -= innerResult;
  44. break;
  45. case '/':
  46. rezult /= innerResult;
  47. break;
  48. case '*':
  49. rezult *= innerResult;
  50. break;
  51. default:
  52. break;
  53. }
  54. } else if (0 <= symbol - '0' && symbol - '0' <= 9) {
  55. switch (expressionOperator) {
  56. case '+':
  57. rezult += symbol - '0';
  58. break;
  59. case '-':
  60. rezult -= symbol - '0';
  61. break;
  62. case '/':
  63. rezult /= symbol - '0';
  64. break;
  65. case '*':
  66. rezult *= symbol - '0';
  67. break;
  68. default:
  69. break;
  70. }
  71. } else if (symbol == '+' || symbol == '-' || symbol == '/' || symbol == '*') {
  72. expressionOperator = symbol;
  73. }
  74. symbol = expression[++index];
  75. }
  76.  
  77. console.log(rezult.toFixed(2));
  78. }
  79.  
  80. //Time limit in Judge 0/100
  81.  
  82. xExpression("4+6/5+(4*9-8)/7*2=");
  83. xExpression("3+(6/5)+(2*3/7)*7/2*(9/4+4*1)=");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement