Question
Using JSFiddle Im trying to do a RPN Stack You will build a Stack Computer from your stack. When a number is entered it goes
Using JSFiddle Im trying to do a RPN Stack
You will build a Stack Computer from your stack. When a number is entered it goes onto the top of the stack. When an operation is entered, the previous 2 numbers are operated on by the operation and the result is pushed onto the top of the stack. This is how an RPN calculator.
For example
2 [enter] 2
5 [enter] 5 2
* [enter] * 5 2 -> collapses to 10 would leave at 10 at the top of the stack
So looking above, I got to stack but I need to look like above like when the 2nd digit is enter mine looks like 2 5 not 5 2. The Stack has to be on top or first and I need addition, multiplication, subtraction, and division added.
.HTML:
Javascript
var Stack = function() { // create array for stack this.stack = []; this.push = function(number){ // push number to array means stack this.stack.push(number); } this.pop = function(number){ // pop last element from array return this.stack.pop(); } this.getString = function(){ // get all elements in array with space between return this.stack.join(' '); } };
function clearDisplay() { // clear display document.getElementById("value").value = ""; }; var stack = new Stack(); var a; var b; var c; var result; var input;
function push() //added push function { input = document.getElementById("value").value;// gets the value input = input.replace(/ /g,'');// replace space with empty string if (!input) { // if input not present alert user alert("Please enter a number"); }else{ if(parseInt(input)){ // check input is number stack.push(parseInt(input)); // if number push number to stack clearDisplay(); // clear input }else{ // if input not a number check for operations switch(input){ case '+': // if plus pop last two contents of stack and add it and push to stack a = stack.pop(); b = stack.pop(); stack.push(a+b); break; case '-': // if minus pop last two contents of stack and subtract it and push to stack a = stack.pop(); b = stack.pop(); stack.push(b-a); break; case '*': // if multiplication pop last two contents of stack and multiply it and push to stack a = stack.pop(); b = stack.pop(); stack.push(a*b); break; case '/': // if division pop last two contents of stack and divide it and push to stack a = stack.pop(); b = stack.pop(); stack.push(b/a); break; default: // if otherthan above operations alert user wrong input alert('Wrong input'); } } } document.getElementById('output').innerHTML = stack.getString(); // display output clearDisplay(); };
Please add the sample output from jsfiddle
remember number needs to stack at the top like example above
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started