diff --git a/Calculator/Pratik1968/main.js b/Calculator/Pratik1968/main.js index 582e49f1a..8ef9c5b53 100644 --- a/Calculator/Pratik1968/main.js +++ b/Calculator/Pratik1968/main.js @@ -3,60 +3,90 @@ let value = "" let ans = 0 -function setInput(){ - let input = document.getElementById("ans"); +function setInput() { + let input = document.getElementById("ans"); input.value = value } -window.onload = function () { +window.onload = function() { setInput() } -function NumberButtonClick(number){ -value +=number +function NumberButtonClick(number) { + let lastChar = value[value.length - 1]; -setInput() + if (lastChar === '/' && number === 0) { + alert("Error: Division by zero is undefined."); + return null; + } else { + value += number + } + + + setInput() } -function functionButton(Function){ - - let input = document.getElementById("ans"); - if (input.value =="" || input.value==null) {return ;} - switch(Function){ -case functionVar.add: - -value+="+"; -break; -case functionVar.substraction: - value+="-"; -break; -case functionVar.multiplication: - value+="x"; -break; -case functionVar.equal: -ans = eval(value.replace("x","*").replace("%","*1/100").replace("^","**")); -value = ans; -break; -case functionVar.division: - value+="/"; -break; -case functionVar.percentage: - value+="%"; -break; -case functionVar.power: -value += "^"; -break; -case functionVar.clear: - value = ""; - break; -case functionVar.backspace: -value =value.slice(0,-1) -break; -case functionVar.decimal: - value+="."; -break; + +function isOperator(value) { + const operators = ['+', '-', '.', '^', '%', '/', 'x']; + if (operators.includes(value)) { + return true; + } + return false; } +function functionButton(Function) { + + let input = document.getElementById("ans"); + if (input.value == "" || input.value == null) { return; } + let lastChar = value[value.length - 1]; -setInput() + if (isOperator(lastChar) && Function !== '8') { + return; + } + + + switch (Function) { + case functionVar.add: + if (lastChar !== "+") + value += "+"; + break; + case functionVar.substraction: + if (lastChar !== "-") + value += "-"; + break; + case functionVar.multiplication: + if (lastChar !== "x") + value += "x"; + break; + case functionVar.equal: + ans = eval(value.replace("x", "*").replace("%", "*1/100").replace("^", "**")); + value = ans; + break; + case functionVar.division: + if (lastChar !== "/") + value += "/"; + break; + case functionVar.percentage: + if (lastChar !== "%") + value += "%"; + break; + case functionVar.power: + if (lastChar !== "^") + value += "^"; + break; + case functionVar.clear: + value = ""; + break; + case functionVar.backspace: + value = value.slice(0, -1) + break; + case functionVar.decimal: + if (lastChar !== "." && !value.includes('.')) + value += "."; + break; + } + + + setInput() } \ No newline at end of file