1answer.
Ask question
Login Signup
Ask question
All categories
  • English
  • Mathematics
  • Social Studies
  • Business
  • History
  • Health
  • Geography
  • Biology
  • Physics
  • Chemistry
  • Computers and Technology
  • Arts
  • World Languages
  • Spanish
  • French
  • German
  • Advanced Placement (AP)
  • SAT
  • Medicine
  • Law
  • Engineering
LekaFEV [45]
3 years ago
13

You can combine the algorithms for converting between infix to postfix and for evaluating postfix to evaluate an infix expressio

n directly. To do so you need two stacks: one to contain operators and the other to contain operands. When an operand is encountered, it is pushed onto the operand stack. When an operator is encountered, it is processed as described in the infix-to-postfix algorithm*. When an operator is popped off the operator stack, it is processed as described in the postfix evaluation algorithm: The top two operands are popped off the operand stack, the operation is performed, and the result is pushed back onto the operand stack. Write a program to evaluate infix expressions directly using this combined algorithm.
Computers and Technology
1 answer:
marshall27 [118]3 years ago
4 0

Answer:

Check the explanation

Explanation:

import java.util.Stack;

/**

* Class to evaluate infix and postfix expressions.

*

public class InfixPostfixEvaluator {

/**

* Operators in reverse order of precedence.

*/

private static final String operators = "-+/*";

private static final String operands = "0123456789";

public int evalInfix(String infix) {

return evaluatePostfix(convert2Postfix(infix));

}

public String convert2Postfix(String infixExpr) {

char[] chars = infixExpr.toCharArray();

Stack<Character> stack = new Stack<Character>();

StringBuilder out = new StringBuilder(infixExpr.length());

for (char c : chars) {

if (isOperator(c)) {

while (!stack.isEmpty() && stack.peek() != '(') {

if (operatorGreaterOrEqual(stack.peek(), c)) {

out.append(stack.pop());

} else {

break;

}

}

stack.push(c);

} else if (c == '(') {

stack.push(c);

} else if (c == ')') {

while (!stack.isEmpty() && stack.peek() != '(') {

out.append(stack.pop());

}

if (!stack.isEmpty()) {

stack.pop();

}

} else if (isOperand(c)) {

out.append(c);

}

}

while (!stack.empty()) {

out.append(stack.pop());

}

return out.toString();

}

public int evaluatePostfix(String postfixExpr) {

char[] chars = postfixExpr.toCharArray();

Stack<Integer> stack = new Stack<Integer>();

for (char c : chars) {

if (isOperand(c)) {

stack.push(c - '0'); // convert char to int val

} else if (isOperator(c)) {

int op1 = stack.pop();

int op2 = stack.pop();

int result;

switch (c) {

case '*':

result = op1 * op2;

stack.push(result);

break;

case '/':

result = op2 / op1;

stack.push(result);

break;

case '+':

result = op1 + op2;

stack.push(result);

break;

case '-':

result = op2 - op1;

stack.push(result);

break;

}

}

}

return stack.pop();

}

private int getPrecedence(char operator) {

int ret = 0;

if (operator == '-' || operator == '+') {

ret = 1;

} else if (operator == '*' || operator == '/') {

ret = 2;

}

return ret;

}

private boolean operatorGreaterOrEqual(char op1, char op2) {

return getPrecedence(op1) >= getPrecedence(op2);

}

private boolean isOperator(char val) {

return operators.indexOf(val) >= 0;

}

private boolean isOperand(char val) {

return operands.indexOf(val) >= 0;

}

}

You might be interested in
Studying MyMagic+ helps one understand the costs associated with information systems deployment at scale. According to your read
vlabodo [156]

Answer:

The answer is "Training".

Explanation:

It is a technology programming that relates to tools, organizations, and services. It focused on helping consumers learn about technology-related topics. It is also known as the registered technology training services, that educate and assist customers in different fields, and incorrect option can be defined as follows:

  • bands readers, It refers to book, which is used in reading.
  • iPod Touch, It is a hardware device.
  • PDAs refer to a hardware device like a palmtop.
8 0
3 years ago
Define the missing function. licenseNum is created as: (100000 * customID) licenseYear, where customID is a function parameter.
Mumz [18]

Answer:

Written in Python:

def licenseNum(licenseYear, customID):

    output = 100000 * customID + licenseYear

    print("Dog license: "+str(output))

 

Explanation:

This line defines the function with parameters licenseYear and customID

def licenseNum(licenseYear, customID):

This calculates the output as stated in the question

    output = 100000 * customID + licenseYear

This displays the output

    print("Dog license: "+str(output))

To call the function, make use of: licenseNum(2014, 777)

Where 2014 and 777 can be replaced with other digits as required

6 0
3 years ago
Why is it a best practice of a remote access policy definition to require employees and users to fill in a separate VPN remote a
Anna007 [38]

Answer:

a.This helps with non-repudiation to ensure the user is who they claim to be and that they are authorized to access confidential organizational assets.

Explanation:

8 0
3 years ago
software that instructs the computer how to run applications and controls the display/keyboard is known as the
OverLord2011 [107]
<span>Operating System is the software that gives the computer instructions on how to run applications. It is considered the most important program that runs on a computer because it manages all the hardware and software on it. It also controls the display/keyboard. </span>
4 0
3 years ago
Which of these allows the programmer to put data inside a variable?
gregori [183]

Answer:

it's the equal sign "="

5 0
2 years ago
Other questions:
  • Please help
    5·1 answer
  • Which folder is the default choice for saving bitmap or JPEG files created by a user?
    9·1 answer
  • Tower Building Activity
    12·1 answer
  • For each entity, select the attribute that could be the unique identifier of each entity.
    12·1 answer
  • What is one method that can be used to open the Microsoft Word application?
    8·1 answer
  • Create an application named TurningDemo that creates instances of four classes: Page, Corner, Pancake, and Leaf. Create an inter
    7·1 answer
  • Anyone wanna join zoo m???????​
    10·2 answers
  • What is the plan to make optimum usage of available spaces?
    15·1 answer
  • Describe the main roles of the communication layer, the network-wide state-management layer, and the network-control application
    15·1 answer
  • the current food label has been in place for 20 years. the fda has proposed changes to this label for a variety of reasons, such
    7·1 answer
Add answer
Login
Not registered? Fast signup
Signup
Login Signup
Ask question!