Question: Question 2: (50 pts) Assume that we are given a number and we carry out a sequence of mathematical operations (multiplication, division, subtraction, summation) on

Question 2: (50 pts) Assume that we are given a number and we carry out a sequence of mathematical operations (multiplication, division, subtraction, summation) on the number. Consider the stack data structure in Java to store the history of the mathematical operations. Then, use the same stack to revert the mathematical operations on a given number. Ex: number = 10 Storing history Operation 1: (first operand, type, second operand) = (number, *, 3) Do() returns 10 * 3 = 30, and the current value of number is 30. stack = {Operation 1} Operation 2: (first operand, type, second operand) = (number, +, ) Do() returns 30 + 8 = 38, and the current value of number is 38. stack = {Operation 1, Operation 2} -Backtracking Last operation in the stack is Operation 2: (30, +, 8). Undo() returns 30, and the current value of number is 30 stack = {Operation 1} Last operation in the stack is Operation 1: (10, * 3). Undo() returns 10, and the current value of number is 10. stack = Define a class Operation which has fields for the first operand, operation type :/- +). and second operand. This class should also implement a method Do(), which returns the result of the operation, and a method Undo(), which returns the first operand's value. Let us given number = 10 initially and assume this value as the first operand. Randomly generate a operation type from (*./,-. +), and a value for the second operand in the range (1,20). Store this operation in a Stack
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
