diff --git a/labs/lab4/desc.json b/labs/lab4/desc.json new file mode 100644 index 0000000..bc33699 --- /dev/null +++ b/labs/lab4/desc.json @@ -0,0 +1,29 @@ +{ + "number": "4", + "task": "Создайте функцию, которая принимает число в качестве входных данных и возвращает true, если сумма ее цифр имеет ту же четность, что и все число. В противном случае верните false.", + "vars": [ + [ + { + "name": "n", + "desc": "Исходное число", + "data": "" + } + ], + [ + { + "name": "n", + "desc": "Исходное число", + "data": "25" + } + ], + [ + { + "name": "n", + "desc": "Исходное число", + "data": "14" + } + ] + ], + "scriptpath": "labs/lab4/main.js", + "complete": true +} \ No newline at end of file diff --git a/labs/lab4/main.js b/labs/lab4/main.js new file mode 100644 index 0000000..6dd09ad --- /dev/null +++ b/labs/lab4/main.js @@ -0,0 +1,34 @@ +"use strict"; + +function main(formName) { + let result = document.getElementById("result"); + + let n = document.forms[formName].elements[0].value; + if (isNotNumber(n)) { + result.textContent = "Ошибка: n не является числом!"; + return; + } + + if (!Number.isInteger(Number(n))) { + result.textContent = "Ошибка: проверка четности доступна только для целых чисел!"; + return; + } + + result.textContent = "Результат: " + checkParity(n); +} + +function checkParity(n) { + return n % 2 == getSumOfDigits(n) % 2; +} + +function isNotNumber(val) { + return val.replace(/\s/g, '').length === 0 || isNaN(val); +} + +function getSumOfDigits(num) { + let result = 0; + for (let char of num) { + result += isNotNumber(char) ? 0 : Number(char); + } + return result; +} \ No newline at end of file