Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. var vstup = ['-', 7, '+', 2, 3];
  2.  
  3. var vstup2 = [2, 3, '+', 2, '-'];
  4.  
  5. function top(zasobnik) {
  6. return zasobnik[zasobnik.length-1];
  7. }
  8.  
  9. function proved(operator, operand1, operand2) {
  10. switch (operator) {
  11. case '+': return operand1 + operand2;
  12. case '-': return operand1 - operand2;
  13. case '*': return operand1 * operand2;
  14. case '/': return operand1 / operand2;
  15. default: return 0;
  16. }
  17. }
  18.  
  19. function isOperator(operator) {
  20. switch (operator) {
  21. case '+':
  22. case '-':
  23. case '*':
  24. case '/':
  25. return true;
  26. default:
  27. return false;
  28. }
  29. }
  30.  
  31. function isCislo(operator) {
  32. return Number.isFinite(operator)
  33. }
  34.  
  35. function vypocti(vstup) {
  36. var zasobnik = [];
  37. for (var i = 0; i < vstup.length; i++) {
  38. var znak = vstup[i]
  39. if (isOperator(znak)) {
  40. zasobnik.push(znak);
  41. } else {
  42. if (isOperator(top(zasobnik))) {
  43. zasobnik.push(znak);
  44. } else {
  45. while (isCislo(top(zasobnik))) {
  46. var znak2 = zasobnik.pop();
  47. var operator = zasobnik.pop();
  48. znak = proved(operator, znak2, znak);
  49. }
  50. zasobnik.push(znak);
  51. }
  52. }
  53. }
  54.  
  55. if (zasobnik.length === 1) {
  56. return zasobnik[0];
  57. }
  58.  
  59. return undefined;
  60. }
  61.  
  62. console.log(vypocti(vstup));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement