Assign_12
Assign12
by dhizzybusy
HTML
Enter the values:<br />
<br>
X: <input type="text" id="x" /> <br />
<br>
Y: <input type="text" id="y" /> <br />
<br>
<input type='button' value='Calculate' onclick='calculate();' /> <br /><br />
<span id='output' />
JavaScript
window.calculate = function() {
var output = document.getElementById('output');
var x = document.getElementById('x').value.trim();
var y = document.getElementById('y').value.trim();
x = parseFloat(x);
y = parseFloat(y);
if (isNaN(x) || isNaN(y)) {
output.innerHTML = "Error: X or Y is not a number!"; //When not a numeric value
return;
}
var l3 = new leaf(3); //assign l3 value 3
var lx = new leaf("x"); //assign lx value x
var l5 = new leaf(5); //assign l5 value 5
var ly = new leaf("y"); //assign ly value y
var mul1 = new node("*", l5, ly); // Last part of equation : 5 * y
var add1 = new node("+", lx, mul1); // Last equation : x + 5 * y
var mul2 = new node("*", l3, add1); // Full equation : 3 * (x + 5 * y)
var values = {};
values["x"] = x;
values["y"] = y;
var res = mul2.traverse(values);
output.innerHTML = "X = " + x + ", Y = " + y + ", Output = " + res;
};
function leaf(value) {
this.value = value;
}
function node(sym, l, r) {
this.sym = sym;
this.l = l;
this.r = r;
}
leaf.prototype.traverse = function(values) {
if (isNaN(this.value)) {
return values[this.value];
}
return this.value;
};
node.prototype.traverse = function(values) {
var l = this.l.traverse(values);
var r = this.r.traverse(values);
var sym = this.sym;
if (sym == '+') {
return l + r;
}
if (sym == "-") {
return l - r;
}
if (sym == '*') {
return l * r;
}
if (sym == '/') {
return l / r;
}
return 0;
};