From 9850a76fcbe045dadb931c95da5230dba17739d0 Mon Sep 17 00:00:00 2001 From: Krio Date: Mon, 6 Sep 2021 19:43:33 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab4/desc.json | 29 +++++++++++++++++++++++++++++ labs/lab4/main.js | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 labs/lab4/desc.json create mode 100644 labs/lab4/main.js 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