diff --git a/08_calculator/calculator.js b/08_calculator/calculator.js index 4147969..a8ce245 100644 --- a/08_calculator/calculator.js +++ b/08_calculator/calculator.js @@ -1,3 +1,9 @@ +let displayValue = 0; +let operator = 0; +let num1 = 0; +let num2 = 0; +const specialChars = ['!', '^', '*', '/', '+', '-']; + const add = function(num1, num2) { let sum = num1 + num2; return sum; @@ -8,28 +14,31 @@ const subtract = function(num1, num2) { return sum; }; -const sum = function(array) { - let sum = 0; - if (array.length > 0) { - for (i = 0; i < array.length; i++ ) { - sum += array[i]; - } - } else { - let sum = 0; - return sum; - } - return sum; -}; +// const sum = function(array) { +// let sum = 0; +// if (array.length > 0) { +// for (i = 0; i < array.length; i++ ) { +// sum += array[i]; +// } +// } else { +// let sum = 0; +// return sum; +// } +// return sum; +// }; -const multiply = function(array) { +const multiply = function(num1, num2) { let sum = 1; - for (i = 0; i < array.length; i++) { - sum = sum * array[i]; - } + sum = num1 * num2; return sum; }; +const divide = function(num1, num2) { + let sum = num1 / num2; + return sum; +} + const power = function(num1, num2) { let sum = 1; for (i = 0; i < num2; i++) { @@ -48,19 +57,107 @@ const factorial = function(num) { const operate = function(op, num1, num2) { switch (op) { - case 'add': + case '+': return add(num1, num2); - case 'subtract': + case '-': return subtract(num1, num2); - case 'multiply': + case '*': return multiply(num1, num2); - case 'power': + case '/': + return divide(num1, num2); + case '^': return power(num1, num2); - case 'factorial': + case '!': return factorial(num1); } } +function updateDisplay(id) { + switch (id) { + case '+': + case '-': + case '*': + case '/': + case '^': + case '!': + case '.': + let includesSpec = specialChars.some(char => display.textContent.includes(char)); + if (includesSpec) { + let num2 = display.textContent.split(/[\/+^!-*-]/); + num1 = num2[0]; + num1 = parseFloat(num1); + num2 = num2[1]; + num2 = parseFloat(num2); + let currentAnswer = operate(operator, num1, num2); + operator = id; + display.textContent = currentAnswer + id; + displayValue = display.textContent; + break; -let answer = operate("multiply", 1, 2); + } + else { + num1 = display.textContent; + num1 = parseFloat(num1); + operator = id; + display.textContent += id; + displayValue = display.textContent; + console.log('false'); + break; + } + case '1': + case "2": + case "3": + case "4": + case "5": + case "6": + case '7': + case '8': + case '9': + case '0': + if (displayValue === 0) { + display.textContent = ''; + display.textContent = id; + displayValue = display.textContent; + } + else { + display.textContent += id; + displayValue = display.textContent; + }; + break; + case 'back': + let newString = display.textContent.slice(0, -1); + display.textContent = newString + displayValue = display.textContent; + console.log('back'); + break; + case 'equals': + let num2 = display.textContent.split(/[\/+^!-*-]/); + num1 = num2[0]; + num1 = parseFloat(num1); + num2 = num2[1]; + num2 = parseFloat(num2); + let answer = operate(operator, num1, num2) + display.textContent = answer; + displayValue = answer; + console.log('equals'); + break; + case 'clear': + display.textContent = '0'; + displayValue = 0; + console.log('clear'); + break; + } +} -console.log(answer); \ No newline at end of file +const display = document.querySelector('.display'); + +const buttons = document.querySelectorAll('.btn'); +buttons.forEach((button) => { + button.addEventListener('click', (e) => { + // operate(button.id); + updateDisplay(button.id); + }); + }); + +// let answer = operate("multiply", 1, 2); + +// console.log(answer); \ No newline at end of file diff --git a/08_calculator/index.html b/08_calculator/index.html index 5253aa5..3a12eea 100644 --- a/08_calculator/index.html +++ b/08_calculator/index.html @@ -12,26 +12,29 @@