Starting Out With C++: Early Objects, Student Value Edition (9th Edition)
9th Edition
ISBN: 9780134379319
Author: Tony Gaddis, Judy Walters, Godfrey Muganda
Publisher: PEARSON
expand_more
expand_more
format_list_bulleted
Question
Chapter 18, Problem 14PC
Program Plan Intro
Stack Based Evaluation of Postfix Expression
Program Plan:
- Declare a function skipWhiteSpace that Skips whitespace in an input stream while evaluating a postfix expression.
- Declare a Function postFixEval that evaluates the postfix expression by considering if the next token in the input stream is an integer, read the integer and push it onto the stack using the push() operation of the stack .
- But if the input stream is an operator, pop the last two values from the stack using the pop operation and apply the operator, and push the result onto the stack and the lone value is the result.
- Declare the main function.
- Prompt the user to enter a postfix expression.
- Evaluate the postfix expression by calling the postFixEval function and print the result.
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
String reversal is considered one of the applications of Stack data structure. You are required to;
Write a java program to reverse a given string using stack ADT.
Your program must implement a function named reverseMyId() for string reversal.
Call reverseMyId() function in the main() function with your ACTUAL student Id as string and print it in the reverse order. For example, if your ACTUAL student id is s101145366, the program will output it as
Show the snapshot of the output screen.
Create two tables (as shown below) to display how the string is added to and removed from the stack. [Hint: Number of columns is equal to the number of characters in your string.]
For Insertion
…
…
…
…
…
For Deletion
…
…
…
…
…
…
Data Structure & Algorithm:
Write a program to perform the following operations on a stack.
a) Create functions for push and pop operations of the stack.b) Write a function to convert an infix expression to a postfix expression. Pass a one-dimensional character array P to the function as input (infix exp) and return character array Q (postfix exp). Test your program for the following input P : ( A – (B / C ) * D + E ) * F % G
c) Write a function for the evaluation of a given postfix expression. For testing pass the postfix expression Q of part b and supply the following set of values.
A = 90, B = 50, C = 2, D = 3, E = 1, F = 2, G = 5
Code with comments and output screenshot is must for an Upvote
Create a Java function that uses a stack and no arithmetic to compare the number of 0's and 1's in a string. If # of 0's is greater, return -1. If # of 1's is greater, return 1. If equal, return 0.
Chapter 18 Solutions
Starting Out With C++: Early Objects, Student Value Edition (9th Edition)
Ch. 18.3 - Describe what LIFO means.Ch. 18.3 - What is the difference between static and dynamic...Ch. 18.3 - What are the two primary stack operations?...Ch. 18.3 - What STL types does the STL stack container adapt?Ch. 18 - Prob. 1RQECh. 18 - Prob. 2RQECh. 18 - What is the difference between a static stack and...Ch. 18 - Prob. 4RQECh. 18 - The STL stack is considered a container adapter....Ch. 18 - What types may the STL stack be based on? By...
Ch. 18 - Prob. 7RQECh. 18 - Prob. 8RQECh. 18 - Prob. 9RQECh. 18 - Prob. 10RQECh. 18 - Prob. 11RQECh. 18 - Prob. 12RQECh. 18 - Prob. 13RQECh. 18 - Prob. 14RQECh. 18 - Prob. 15RQECh. 18 - Prob. 16RQECh. 18 - Prob. 17RQECh. 18 - Prob. 18RQECh. 18 - Prob. 1PCCh. 18 - Prob. 2PCCh. 18 - Prob. 3PCCh. 18 - Prob. 4PCCh. 18 - Prob. 5PCCh. 18 - Prob. 6PCCh. 18 - Prob. 7PCCh. 18 - Prob. 8PCCh. 18 - Prob. 9PCCh. 18 - Prob. 10PCCh. 18 - Prob. 11PCCh. 18 - Prob. 12PCCh. 18 - Prob. 13PCCh. 18 - Prob. 14PCCh. 18 - Prob. 15PC
Knowledge Booster
Similar questions
- In C programming language please Write a program that uses a stack to check if a given string is a palindrome or not. A palindrome is a word, phrase, number, or other sequence of characters that reads the same backward as forward. Your program should use a stack to reverse the characters of the given string, and then compare the reversed string with the original string to determine if it is a palindrome or not. Here are some additional requirements for your program: Your program should prompt the user to enter a string and read it from the standard input. Your program should define a stack data structure with push() and pop() functions to store and retrieve characters. Your program should use the stack to reverse the characters of the input string and store the reversed string in a separate variable. Your program should then compare the reversed string with the original string to determine if it is a palindrome. Your program should output whether or not the input string is a…arrow_forwardIn a stack, if a user tries to remove an element from an empty stack it is called a) Underflow b) Empty collection c) Overflow d) Garbage Collectionarrow_forward(Postfix Evaluation) Write a program that evaluates a valid postfix expression such as 6 2 + 5 * 8 4 / -The program should read a postfix expression consisting of digits and operators into a string. Using modified versions of the stack functions implemented earlier in this chapter, the program should scan the expression and evaluate it. The algorithm is as follows: While you have not reached the end of the string, read the expression from left to right. If the current character is a digit, Push its integer value onto the stack (the integer value of a digit character is its value in the computer’s character set minus the value of '0' in the computer’s character set). Otherwise, if the current character is an operator, Pop the two top elements of the stack into variables x and y. Calculate y operator x. Push the result of the calculation onto the stack. When you reach the end of the string, pop the top value of the stack. This is the result of the postfix expression. [Note: In Step 2…arrow_forward
- Evaluate the following (postfix) expression using a stack. Assume A=1, B = 2 and C = 3. ABC+*CBA-+*arrow_forwardBalancing Parenthesis Input Output ((())) Balance (())) Unbalance (()()(())) Balance Given a sequence consisting of parentheses, determine whether the expression is balanced. A sequence of parentheses is balanced if every open parenthesis can be paired uniquely with a closing parenthesis that occurs after the former. Algorithm: Create an empty stack using list. Allow user to enter the set of parentheses in string format Read each character of the string (parentheses) from left to right If the character is an open parenthesis then push It onto the stack Else check stack if empty If yes then Print a message “Unbalance” and exit loop If no pop once and proceed to the next step Repeat step 3 steps until the last parenthesis. Check stack. If empty then print message “Balance” else “Unbalance” Note: Assuming all inputs are valid. Error and exception handling not neededarrow_forwardbool check(stack<int>s) { if(s.topindex==maxsize) return 1; return 0; } this function is used to check if the stack is full or not Select one: True Falsearrow_forward
- OCaml Code: I need help with writing the push and pop statements in order to create an interpreter for OCaml. I need help with writing the print statement as well. The println command pops a string off the top of the stack and writes it, followed by a newline, to the output file that is specified as the second argument to the interpreter function. In the case that the top element on the stack is not a string, it should be returned to the stack and an :error: pushed. If the stack is empty, an :error: shall be pushed. Below is the unfinished code. Make sure to use the test cases as well and show the screenshots of the code passing the test cases. Attached is info. for push and pop. interpreter.ml type stackValue = BOOL of bool | INT of int | ERROR | STRING of string | NAME of string | UNIT type command = ADD | SUB | MUL | DIV | PUSH of stackValue | POP of stackValue | REM | NEG | TOSTRING | SWAP | PRINTLN | QUIT let interpreter (input, output) = let ic = open_in input in…arrow_forwardGiven a stack of objects of type char, write the output and the stack contents atthe return of each function call. The stack is initially empty. (Assume pop() doesn’t return anything).arrow_forwardWrite the program by completing the main program that doesthe following:1. Call the push function three times.2. Prints out the updated stack3. Calls the pop function once4. Print the updated stack again.No need to write the algorithm for this problem, it is already given to you.#include <stdio.h>#define STACK_EMPTY '0'#define STACK_SIZE 20voidpush(char stack[], /* input/output - the stack */char item, /* input - data being pushed onto the stack */int *top, /* input/output - pointer to top of stack */int max_size) /* input - maximum size of stack */{if (*top < max_size-1) {++(*top);stack[*top] = item;}}charpop (char stack[], /* input/output - the stack */int *top) /* input/output - pointer to top of stack */{char item; /* value popped off the stack */if (*top >= 0) {item = stack[*top];--(*top);} else {item = STACK_EMPTY;}return (item);}intmain (void){char s [STACK_SIZE];int s_top = -1; // stack is empty/* complete the program here */return (0);}arrow_forward
- Use a stack to reverse the input integer values. Check the stack grows as more elements are pushed. Use with and without function pointer in each of the problem (Please give correct answer with explanation)arrow_forward. Balanced ParenthesesA string of characters has balanced parentheses if each right parenthesis occurringin the string is matched with a preceding left parenthesis, in the same way that eachright brace in a C++ program is matched with a preceding left brace. Write a programthat uses a stack to determine whether a string entered at the keyboard has balancedparentheses.arrow_forwardstruct Faculty { int id; char name[30]; char status[10]; //status permanent or visiting Faculty next; }; Assume we have three stacks S, V and P. S is a stack having mix data of visiting and permanent faculty members, V is empty and for visiting faculty memebrs and P is also empty for permanent faculty members. Using primitive functions of stack write a C++ code which reads entire data from S and write on respective stack V or P.arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning