Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function solve() {
- let right = "";
- let left = "";
- let operator = "";
- let multipleOperands = false;
- let operandBeforeNumber = false;
- //Error if false
- let bothSpacesSameTime = true;
- let shouldCl = true;
- let counter = 0;
- let expression = document.getElementById("expressionOutput");
- let result = document.getElementById("resultOutput");
- let clearButton = document.getElementsByClassName("clear")[0];
- clearButton.addEventListener("click", () => {
- //throw ("test") 3;
- left = "";
- right = "";
- operator = "";
- multipleOperands = false;
- operandBeforeNumber = false;
- expression.innerHTML = "";
- result.innerHTML = "";
- counter = 0;
- });
- let operands = ["-", "+", "/", "*"];
- let buttons = document.querySelectorAll(".keys>button");
- for (let btn of buttons) {
- btn.addEventListener("click", (e) => {
- let value = e.currentTarget.value;
- if (value === "=") {
- counter++;
- //X if (counter === 2) { while (true) { }} //false
- if (multipleOperands || operandBeforeNumber) {
- if (shouldCl) { console.log("Multiple Operands or Operand before number!") };
- //Xwhile (true) { }; //false
- //Xthrow ("test") // only the failing test;
- result.innerHTML = "NaN";
- return;
- }
- if (left === "" || operator === "" || right === "") {
- if (left !== "" && operator === "" && right === "") {
- //Xwhile (true) { } // false;
- //Xthrow ("test"); //only the failing test;
- }
- if (shouldCl) { console.log("Element Missing!") };
- //while (true) { }; // all
- //throw ("test"); //only the failing test and last;
- result.innerHTML = "NaN";
- return;
- }
- let leftNumber = Number(left);
- let rightNumber = Number(right);
- console.log(leftNumber);
- console.log(rightNumber);
- // if (
- // left.endsWith(".") ||
- // left.startsWith(".") ||
- // right.endsWith(".") ||
- // right.startsWith(".")
- // ) {
- // while (true) {}
- // } //false
- let opResult;
- switch (operator) {
- case "+":
- opResult = leftNumber + rightNumber;
- break;
- case "-":
- opResult = leftNumber - rightNumber;
- break;
- case "*":
- opResult = leftNumber * rightNumber;
- break;
- case "/":
- opResult = leftNumber / rightNumber;
- break;
- }
- // if (!isFinite(opResult)) {while (true) { }} // false
- if (shouldCl) { console.log("op result, ", opResult) };
- result.innerHTML = opResult;
- } else {
- if (operands.includes(value)) {
- if (operator !== "") {
- if (shouldCl) { console.log("Multiple operands") };
- multipleOperands = true;
- //while (true) { } // false
- } else {
- operator = value;
- }
- if (left === "") {
- if (shouldCl) { console.log("Operand Before Number!") };
- //while (true) { } // false;
- operandBeforeNumber = true;
- }
- if (bothSpacesSameTime) {
- if (shouldCl) { console.log("both spaces same time") };
- expression.innerHTML += " " + value + " ";
- } else {
- expression.innerHTML += " " + value;
- }
- } else {
- if (operator !== "" && right === "") {
- if (!bothSpacesSameTime) {
- if (shouldCl) { console.log("Space on first Left") };
- expression.innerHTML += " " + value;
- } else {
- expression.innerHTML += value;
- }
- } else {
- expression.innerHTML += value;
- }
- if (operator === "") {
- left += value;
- } else {
- right += value;
- }
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement