homeworkstudyhelp

Our Services

Get 15% Discount on your First Order

CSC521 Programming Project 3 A Stack-based Calculator With Postfix…

CSC521 Programming Project 3 A Stack-based Calculator With Postfix Expression Using Java Purpose • To make a simple integer calculator for 8-bit signed numbers (i.e. accept 12*4*(5-3) = and produce an answer). • To see how the stack can be used to support arithmetic operations. • Note: Groups of at most three students. Program 1. The calculator accepts an arithmetic expression in infix notation from user input, parses it, and prints an answer for the expression. Possible operators are *,/,+,- and parentheses are used to specify the order of operations. The priority of * and / are higher than that of + and – operators. That is, the answer for 3+4*5= is 23 and not 35. Among operators of equal priority, such as + and – or * and /, we assume association is from the left, so that 4*a*c means (4*a)*c, 12 – 4 – 3 = 5, not 11. 2. Postfix expressions can be used to specify arithmetic expressions using a parenthesis-free notation. An infix expression from user input is translated to a postfix expression first. Translating infix expressions into their corresponding postfix expressions is a part of this project. Below are some examples. Treat the symbol “^” as negative sign as oppose to the subtraction operation, and available only in the postfix notation. Moreover, treat it as part of a number rather than an operation. Infix Postfix (a + b) ab+ (x-y-z) xy-z- ((x-y-z)/u+v) xy-z-u/v+ ((x-y-z)/u+v*w) xy-z-u/vw*+ ((a-b-c)/(d+e)) ab-c-de+/ a*b+c*(d-e) ab*cde-*+ (-a + b) ^ab+ (x-(-y)-z) x^y-za a -b ^b 3. Your task is to use stacks to evaluate postfix expressions. To evaluate a postfix expression, P, you scan P from left-to-right. When you encounter an operand, X, you push it onto an evaluation stack, S. Repeat this when you have more than one operand. When you encounter an operator, ß, while scanning P, you pop the topmost operand stacked on S into D2 (which denotes the right operand), then you pop another topmost operand stacked on S into D3 (which denotes the left operand). Finally, you perform the operation ß on D2 and D3, getting the value of the expression (D3 ß D2), and you push the value back onto the stack S. When you are finished scanning P, the value of P is the only item remaining on the stack S. 4. Assume that infix expression input is always correct; that is, no syntax error checking is necessary. 5. For the addition and subtraction, check overflow. 6. For the division, roundup the remainder. Remember this is an 8-bit dividend and 8-bit divisor. 7. A few assumptions concerning valid input and the handling of certain input: For the unary minus, you assume that the unary minus will either be the first character of the expression or will immediately follow a left parentheses. Under this assumption expressions such as 1–2 and 1+-2 are not allowed. However, you allow the unary minus to be used outside of any parenthetical enclosure such as -(1+2) or -(-(-(1))). Another assumption, make the empty parentheses not allowed, because one may not sure what value they would evaluate to. Checklist • Well-commented code • Your program is valid for all possible operands and operations. (Operands can be integers between -128 and +127). Test • After executing your program, it should ask for the use input expression. It first prints out its postfix notation, and then print the final evaluated value. Again, we assume the user input is always correct. • Please submit a zip file titled “CSC521_StudentLastName1_LastName2_LastName3_proj3.zip”, which includes a readme specifying how to execute your program, the source Java programs, and 5-8 screen shots showing if your program executes correctly. The cases of Overflow 1. For the addition and subtraction, please use two’s complement, referred as below link 2. For multiplication and division, two’s complement is a bit more complex. One easiest way is to simply find the magnitude of the two multiplicands (or dividend and divisor), multiply (or divide) them, and then use the original sign bits to determine the sign of the result. For example, for multiplication, if the multiplicands had the same sign (both positive or both negative), the result must be positive; if the they had different signs, the result is negative. Multiplication by zero is a special case, which needs to be dealt with. 3. To make it simpler, when the result of the user-input expression causes overflow, your program just indicates a. overflow occurs, and b. the result of your evaluation. For example, if the user input is 80+80, your program should print out a message “overflow occurs!”, with the output value -96. 4. Among others, a few examples I will test are: a. 40+50 b. 45+(-50) c. 80+80 (overflow) d. -36+107 e. -50-122 (overflow) f. -33*3 g. 101*61 (overflow) h. -101*61 (overflow) i. -70/3 j. -120/(-34) Above examples only consider one operator in an expression. Your program should certainly consider the case of multiple operators with parentheses, convert to postfix, and evaluate using stack. 5. To help me to test your cases, please indicate in the readme file if any of above or extra examples have been successfully tested, and give a set of your own screenshots.

Share This Post

Email
WhatsApp
Facebook
Twitter
LinkedIn
Pinterest
Reddit

Order a Similar Paper and get 15% Discount on your First Order

Related Questions

Retail Price Calculator using C#   Create an application that lets…

Retail Price Calculator using C#   Create an application that lets the user enter an item’s wholesale cost and its markup percentage. It should then display the items retail price. For example: If an item’s wholesale cost is $5.00 and its markup percentage is 100 percent, then the item’s retail

/* * Part 1: Light * A class which represents a single light bulb….

/** Part 1: Light* A class which represents a single light bulb.For this assignment, you will be writing a class called Light that represents asingle light bulb.Your job is to add code to Light.java so that your implementation meets therequirements specified below.To complete the assignment, replace all the /* missing

  Javascript Program writing Task A   1.1 As a JavaScript…

  Javascript Program writing Task A   1.1 As a JavaScript  programming student ,I want to establish  code with   a variable `isHappy` and assign it a boolean value based on the value of the given String variable `action`, whether it is `Smile` or not.    1.2 As a JavaScript student,

import java.util.Arrays; import java.util.Random; public class…

import java.util.Arrays; import java.util.Random; public class Board { private boolean[][] board /** * Construct a puzzle board by beginning with a solved board and then * making a number of random moves. That some of the possible moves * don’t actually change what the board looks like. * * @param

Implement the  programs in ARM assembly. implement them first in…

Implement the  programs in ARM assembly. implement them first in JAVA and translate the logic into assembly Implement a program to calculate multiplication using successive addition with recursion. For example, 5×4 is 5+5+5+5.  This can be defined recursively as:             Mult(m, n) = if n is 1,  return m                               

file named A10.java. Place all your code in this file. Create…

file named A10.java. Place all your code in this file. Create public static ArrayList of integers named intList. Define public static method addNumber (int i) that adds i to your list. Create public static HashMap of integer, integers named int Map. Define public static method add Pair (int i, int

Traversing 2D Arrays Traditional For Loop assignment 1 When…

Traversing 2D Arrays Traditional For Loop assignment 1 When traversing a 2D array a nested loop is required. The first or outside For loop will traverse the rows and the second or inside For loop will traverse the columns.     We say “for every row, for every column of

3.1.2 – Using nslookup for Passive Reconnaissance What is NSLookup?…

3.1.2 – Using nslookup for Passive Reconnaissance What is NSLookup? Try to do NSLookup on a different website and record your answer. How is Nslookup beneficial? Which part of the ethical hacking methodology does this relate to? 3.1.3 – Using ipconfig for passive reconnaissance What is ipconfig used for? After

Help me with Java   MovieStack Your are tired of asking your…

Help me with Java   MovieStack Your are tired of asking your “friend” to watch the movies you like. So you want to give your friend a stack of movies to watch, representing a watchlist. Let’s automate this process by creating a new data structure class called MovieStack, which should

Question 1: The difference between head and tail recursion? Does…

Question 1: The difference between head and tail recursion? Does JAVA support it? What are the advantages and disadvantages of each?Question 2: Describe, in detail, what are the “Traversal of Binary Trees” (hint: In-order Traversal, Pre-order Traversal, Post-order Traversal):

I need help writing a Java class StringSet .  A StringSet object…

I need help writing a Java class StringSet.  A StringSet object is given a series of up to 15 String objects.  It stores these Strings (or a reference to them, to be precise) and can perform limited calculations on the entire series.   The StringSet class has the following specification:

What is the purpose of comments and whitespaces in Java? What are…

What is the purpose of comments and whitespaces in Java? What are the Java statements and logic necessary to produce a Java program that correctly prompts users to enter a username and password? Consider that the username is not case-sensitive, but the password is. The user needs to correctly type