Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var vstup = ['-', 7, '+', 2, 3];
- var vstup2 = [2, 3, '+', 2, '-'];
- function top(zasobnik) {
- return zasobnik[zasobnik.length-1];
- }
- function proved(operator, operand1, operand2) {
- switch (operator) {
- case '+': return operand1 + operand2;
- case '-': return operand1 - operand2;
- case '*': return operand1 * operand2;
- case '/': return operand1 / operand2;
- default: return 0;
- }
- }
- function isOperator(operator) {
- switch (operator) {
- case '+':
- case '-':
- case '*':
- case '/':
- return true;
- default:
- return false;
- }
- }
- function isCislo(operator) {
- return Number.isFinite(operator)
- }
- function vypocti(vstup) {
- var zasobnik = [];
- for (var i = 0; i < vstup.length; i++) {
- var znak = vstup[i]
- if (isOperator(znak)) {
- zasobnik.push(znak);
- } else {
- if (isOperator(top(zasobnik))) {
- zasobnik.push(znak);
- } else {
- while (isCislo(top(zasobnik))) {
- var znak2 = zasobnik.pop();
- var operator = zasobnik.pop();
- znak = proved(operator, znak2, znak);
- }
- zasobnik.push(znak);
- }
- }
- }
- if (zasobnik.length === 1) {
- return zasobnik[0];
- }
- return undefined;
- }
- console.log(vypocti(vstup));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement