Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public double getResult(Queue<String> queue)
- {
- Stack<Double> stack = new Stack<>();
- String next = queue.remove();
- double temp = 0;
- while(queue.size() >= 0)
- {
- switch (next)
- {
- case "+":
- {
- double a = stack.pop(), b = stack.pop();
- temp = a + b;
- stack.push(temp);
- break;
- }
- case "-":
- {
- double a = stack.pop(), b = stack.pop();
- temp = b - a;
- stack.push(temp);
- break;
- }
- case "*":
- {
- double a = stack.pop(), b = stack.pop();
- temp = a * b;
- stack.push(temp);
- break;
- }
- case "^":
- {
- double a = stack.pop(), b = stack.pop();
- temp = Math.pow(b, a);
- stack.push(temp);
- break;
- }
- case "/":
- {
- double a = stack.pop(), b = stack.pop();
- temp = b / a;
- stack.push(temp);
- break;
- }
- case "!":
- {
- long a = (long)(stack.pop()).doubleValue();
- if (a >= 16)
- a++;
- else
- {
- long t = 1;
- for (int i = 1; i <= a; i++)
- t *= i;
- stack.push((double)t);
- }
- break;
- }
- case "sin":
- {
- double a = stack.pop();
- temp = Math.sin(a);
- stack.push(temp);
- break;
- }
- case "cos":
- {
- double a = stack.pop();
- temp = Math.cos(a);
- stack.push(temp);
- break;
- }
- case "tan": {
- double a = stack.pop();
- temp = Math.tan(a);
- stack.push(temp);
- break;
- }
- case "sqrt":
- {
- double a = stack.pop();
- temp = Math.sqrt(a);
- stack.push(temp);
- break;
- }
- case "ln":
- {
- double a = stack.pop();
- temp = Math.log(a);
- stack.push(temp);
- break;
- }
- case "log":
- {
- double a = stack.pop();
- temp = Math.log10(a);
- stack.push(temp);
- break;
- }
- case "abs":
- {
- double a = stack.pop();
- temp = Math.abs(a);
- stack.push(temp);
- break;
- }
- case "m":
- {
- stack.push(-stack.pop());
- break;
- }
- default:
- {
- stack.push(Double.parseDouble(next));
- break;
- }
- }
- if (queue.size() == 0)
- return stack.pop();
- else
- next = queue.remove();
- }
- try {
- if (stack.size() > 0)
- throw new Exception("Аператары і аперанды не супадаюць");
- }
- catch (Exception ex) { }
- return temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement