Advertisement
Guest User

Untitled

a guest
May 20th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.  
  3.     let right = "";
  4.     let left = "";
  5.     let operator = "";
  6.     let multipleOperands = false;
  7.     let operandBeforeNumber = false;
  8.  
  9.     //Error if false
  10.     let bothSpacesSameTime = true;
  11.     let shouldCl = true;
  12.     let counter = 0;
  13.  
  14.     let expression = document.getElementById("expressionOutput");
  15.     let result = document.getElementById("resultOutput");
  16.  
  17.     let clearButton = document.getElementsByClassName("clear")[0];
  18.     clearButton.addEventListener("click", () => {
  19.         //throw ("test") 3;
  20.         left = "";
  21.         right = "";
  22.         operator = "";
  23.         multipleOperands = false;
  24.         operandBeforeNumber = false;
  25.         expression.innerHTML = "";
  26.         result.innerHTML = "";
  27.         counter = 0;
  28.     });
  29.  
  30.     let operands = ["-", "+", "/", "*"];
  31.  
  32.     let buttons = document.querySelectorAll(".keys>button");
  33.     for (let btn of buttons) {
  34.         btn.addEventListener("click", (e) => {
  35.             let value = e.currentTarget.value;
  36.  
  37.             if (value === "=") {
  38.                 counter++;
  39.                 //X if (counter === 2) { while (true) { }} //false
  40.  
  41.                 if (multipleOperands || operandBeforeNumber) {
  42.                     if (shouldCl) { console.log("Multiple Operands or Operand before number!") };
  43.                     //Xwhile (true) { }; //false
  44.                     //Xthrow ("test") // only the failing test;
  45.                     result.innerHTML = "NaN";
  46.                     return;
  47.                 }
  48.  
  49.                 if (left === "" || operator === "" || right === "") {
  50.                     if (left !== "" && operator === "" && right === "") {
  51.                         //Xwhile (true) { } // false;
  52.                         //Xthrow ("test"); //only the failing test;
  53.                     }
  54.                     if (shouldCl) { console.log("Element Missing!") };
  55.                     //while (true) { }; // all
  56.                     //throw ("test"); //only the failing test and last;
  57.                     result.innerHTML = "NaN";
  58.                     return;
  59.                 }
  60.  
  61.                 let leftNumber = Number(left);
  62.                 let rightNumber = Number(right);
  63.                 console.log(leftNumber);
  64.                 console.log(rightNumber);
  65.  
  66.                 // if (
  67.                 //     left.endsWith(".") ||
  68.                 //     left.startsWith(".") ||
  69.                 //     right.endsWith(".") ||
  70.                 //     right.startsWith(".")
  71.                 // ) {
  72.                 //     while (true) {}
  73.                 // } //false
  74.  
  75.                 let opResult;
  76.                 switch (operator) {
  77.                     case "+":
  78.                         opResult = leftNumber + rightNumber;
  79.                         break;
  80.                     case "-":
  81.                         opResult = leftNumber - rightNumber;
  82.                         break;
  83.                     case "*":
  84.                         opResult = leftNumber * rightNumber;
  85.                         break;
  86.                     case "/":
  87.                         opResult = leftNumber / rightNumber;
  88.                         break;
  89.                 }
  90.  
  91.                 // if (!isFinite(opResult)) {while (true) { }} // false
  92.  
  93.                 if (shouldCl) { console.log("op result, ", opResult) };
  94.                 result.innerHTML = opResult;
  95.             } else {
  96.                 if (operands.includes(value)) {
  97.                     if (operator !== "") {
  98.                         if (shouldCl) { console.log("Multiple operands") };
  99.                         multipleOperands = true;
  100.                         //while (true) { } // false
  101.                     } else {
  102.                         operator = value;
  103.                     }
  104.  
  105.                     if (left === "") {
  106.                         if (shouldCl) { console.log("Operand Before Number!") };
  107.                         //while (true) { } // false;
  108.                         operandBeforeNumber = true;
  109.                     }
  110.                     if (bothSpacesSameTime) {
  111.                         if (shouldCl) { console.log("both spaces same time") };
  112.                         expression.innerHTML += " " + value + " ";
  113.                     } else {
  114.                         expression.innerHTML += " " + value;
  115.                     }
  116.                 } else {
  117.                     if (operator !== "" && right === "") {
  118.                         if (!bothSpacesSameTime) {
  119.                             if (shouldCl) { console.log("Space on first Left") };
  120.                             expression.innerHTML += " " + value;
  121.                         } else {
  122.                             expression.innerHTML += value;
  123.                         }
  124.                     } else {
  125.                         expression.innerHTML += value;
  126.                     }
  127.  
  128.                     if (operator === "") {
  129.                         left += value;
  130.                     } else {
  131.                         right += value;
  132.                     }
  133.                 }
  134.             }
  135.         });
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement