123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283 |
- // a
- // Напишите функцию a, которая просто является коротким именем для alert.
- // интересно, а такой вариант решения прокатит?:
- // a = alert;
- // The End.
- function a(message) {
- return alert(message);
- }
- // ----------------------------------------------------------
- // cube
- // Напишите функцию cube, которая возвращает число в третьей степени:
- const cube = function (toCube) {
- if (isNaN(toCube)) return 0;
- return toCube * toCube * toCube; // Math.pow(toCube, 3);
- };
- // ----------------------------------------------------------
- // avg2
- // Напишите функцию avg2, которая рассчитывает среднюю для двух чисел:
- // Если без заморочек, то:
- // const avg2 = (a = 0, b = 0) => (a + b) / 2;
- // среднее арифметическое для любого количества аргументов
- function avg2(...argArr) {
- return argArr.reduce((a, b) => a + b) / argArr.length;
- }
- // ----------------------------------------------------------
- // sum3
- // Напишите функцию sum3 для суммирования 3 чисел:
- // Обратите внимание, что sum3 от двух параметров тоже работает корректно.
- // Если просто без заморочек
- // const sum3 = (x1 = 0, x2 = 0, x3 = 0) => x1 + x2 + x3;
- // формирование массива ЧИСЕЛ
- function inpNumberArr() {
- var term = [];
- var inp;
- do {
- inp = prompt("Введите число.\nДля завершения нажмите 'Cansel'");
- if (!isNaN(inp) && inp !== null && inp !== "") {
- term.push(+inp);
- }
- } while (inp !== null);
- return term;
- }
- function arrSum(arr) {
- return arr.reduce((ar1, ar2) => ar1 + ar2);
- } // написали функцию дя замены reduce, но в ней использовали reduce... смешно)))
- // Если без reduce, но корректно будет работать только с массивом чисел
- // function arrSum(...arr) {
- // var sum = 0;
- // for (item of arr) sum += item;
- // return sum;
- // }
- //
- // ----------------------------------------------------------
- // intRandom
- // Напишите функцию intRandom, которая принимает два параметра: нижнюю и верхнюю границу,
- // и возвращает целое случайное число из этого диапазона включительно:
- // Обратите внимание, что если передан один параметр (intRandom(10) в примере выше),
- // то функция работает как будто первый параметр равен 0,
- // а переданный параметр становится вторым параметром(intRandom(0, 10))
- // Используйте умножение для расширения значения встроенной функции Math.random c диапозона 1,
- // сложениe для смещения результата на первый параметр, и Math.round для округления результата
- // Дальше идет РАБОЧИЙ вариант, но навороченный, т.е. некрасивый
- // const intRandom = function (...sumArr) {
- // if (sumArr[0] === sumArr[1] && sumArr[0] !== undefined) return sumArr[0];
- // for (let i = 0; i < 2; i++) {
- // if (!(i in sumArr)) sumArr[i] = 0;
- // }
- // if (sumArr[0] === 0 && sumArr[1] === 0) sumArr[1] = 1;
- // // теперь при вызове функции вообще без параметров будет работать просто как random 0/1
- // sumArr.sort((a, b) => a - b);
- // return sumArr[0] + Math.round(Math.random() * (sumArr[1] - sumArr[0]));
- // };
- // А теперь простой и красивый (и без переданных параметров тоже будет работать 0/1)
- // и нам все равно на каком месте передадут максимальный и минимальный параметр
- const intRandom = function (min = 1, max = 0) {
- return min + Math.round(Math.random() * (max - min));
- };
- // ----------------------------------------------------------
- // greetAll
- // Сделайтей функцию, которая приветствует всех, кто передан в качестве параметров.
- // Вам поможет arguments и for
- function greetAll() {
- all = "";
- for (item of arguments) all += " " + item + ",";
- all = all.slice(0, -1);
- if (all) {
- console.log(`Hi,${all}!`);
- alert(`Hi,${all}!`);
- }
- }
- // ----------------------------------------------------------
- // sum
- // Напишите функцию sum, которая сумирует любое количество параметров:
- // Используйте псевдомассив arguments для получения всех параметров,
- // и for для итерирования по нему
- function sum() {
- var total = 0;
- for (let item of arguments) {
- total += +item;
- }
- return total;
- }
- //--------------------- UNION ---------------------------
- // Union
- // Всё предыдущие функции и примеры с ними объедините в функции,
- // которые вызывайте в switch по имени задания:
- let taskList = `
- a_alert
- cube
- avg2
- sum3
- intRandom
- greetAll
- sum
- `;
- function hw05_functions_union(
- task = (
- prompt("Введите название задания:\n" + taskList, "") || "0"
- ).toLowerCase()
- ) {
- switch (task) {
- case "0":
- {
- }
- break;
- case "a_alert":
- {
- a(`Привет!\n` + a);
- }
- break;
- case "cube":
- {
- alert(
- `Your number in cube iz: ` + cube(+prompt("Input number:"))
- );
- }
- break;
- case "avg2":
- {
- alert(`Среднее значение: ` + avg2(inpNumberArr()));
- }
- break;
- case "sum3":
- {
- alert("Сумма всех чисел = " + arrSum(inpNumberArr()));
- }
- break;
- case "intrandom":
- {
- alert(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
- console.log(
- `Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`
- );
- //результат может быть и не такой как в предыдущей строке alert)))
- alert(
- `Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`
- );
- console.log(
- `Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`
- );
- alert(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
- console.log(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
- alert(`Случайноее число в диапазоне {} ${intRandom()}`);
- console.log(`Случайноее число в диапазоне {} ${intRandom()}`);
- }
- break;
- case "greetall":
- {
- greetAll("Superman");
- greetAll("Superman", "SpiderMan");
- greetAll("Superman", "SpiderMan", "Captain Obvious");
- }
- break;
- case "sum":
- {
- alert(`1+2+3+4 = ` + sum(1, 2, 3, 4));
- }
- break;
- default:
- alert("Такой задачи нет");
- }
- }
- //--------------------- UNION Declarative---------------------------
- // Union declarative
- // Используйте ассоциативный массив вместо switch
- unDeclObg = {
- byebye: () => alert("Bye bye..."),
- a_alert: () => a(`Привет!\n` + a),
- cube: () =>
- alert(`Your number in cube iz: ` + cube(+prompt("Input number:"))),
- avg2: () => alert(`Среднее значение: ` + avg2(inpNumberArr())),
- sum3: () => alert("Сумма всех чисел = " + arrSum(inpNumberArr())),
- intrandom: () => {
- alert(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
- console.log(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
- //результат может быть и не такой как в предыдущей строке alert)))
- alert(`Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`);
- console.log(`Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`);
- alert(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
- console.log(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
- alert(`Случайноее число в диапазоне {} ${intRandom()}`);
- console.log(`Случайноее число в диапазоне {} ${intRandom()}`);
- },
- greetall: function () {
- greetAll("Superman");
- greetAll("Superman", "SpiderMan");
- greetAll("Superman", "SpiderMan", "Captain Obvious");
- },
- sum: () => alert(`1+2+3+4 = ` + sum(1, 2, 3, 4)),
- init() {
- try {
- this[
- prompt(
- "Введите название задания:\n" + taskList,
- "byebye"
- ).toLowerCase()
- ]();
- } catch (exept) {
- unDeclObg.byebye();
- // console.log(exept)
- }
- },
- };
|