hw05_functions.js 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. // a
  2. // Напишите функцию a, которая просто является коротким именем для alert.
  3. // интересно, а такой вариант решения прокатит?:
  4. // a = alert;
  5. // The End.
  6. function a(message) {
  7. return alert(message);
  8. }
  9. // ----------------------------------------------------------
  10. // cube
  11. // Напишите функцию cube, которая возвращает число в третьей степени:
  12. const cube = function (toCube) {
  13. if (isNaN(toCube)) return 0;
  14. return toCube * toCube * toCube; // Math.pow(toCube, 3);
  15. };
  16. // ----------------------------------------------------------
  17. // avg2
  18. // Напишите функцию avg2, которая рассчитывает среднюю для двух чисел:
  19. // Если без заморочек, то:
  20. // const avg2 = (a = 0, b = 0) => (a + b) / 2;
  21. // среднее арифметическое для любого количества аргументов
  22. function avg2(...argArr) {
  23. return argArr.reduce((a, b) => a + b) / argArr.length;
  24. }
  25. // ----------------------------------------------------------
  26. // sum3
  27. // Напишите функцию sum3 для суммирования 3 чисел:
  28. // Обратите внимание, что sum3 от двух параметров тоже работает корректно.
  29. // Если просто без заморочек
  30. // const sum3 = (x1 = 0, x2 = 0, x3 = 0) => x1 + x2 + x3;
  31. // формирование массива ЧИСЕЛ
  32. function inpNumberArr() {
  33. var term = [];
  34. var inp;
  35. do {
  36. inp = prompt("Введите число.\nДля завершения нажмите 'Cansel'");
  37. if (!isNaN(inp) && inp !== null && inp !== "") {
  38. term.push(+inp);
  39. }
  40. } while (inp !== null);
  41. return term;
  42. }
  43. function arrSum(arr) {
  44. return arr.reduce((ar1, ar2) => ar1 + ar2);
  45. } // написали функцию дя замены reduce, но в ней использовали reduce... смешно)))
  46. // Если без reduce, но корректно будет работать только с массивом чисел
  47. // function arrSum(...arr) {
  48. // var sum = 0;
  49. // for (item of arr) sum += item;
  50. // return sum;
  51. // }
  52. //
  53. // ----------------------------------------------------------
  54. // intRandom
  55. // Напишите функцию intRandom, которая принимает два параметра: нижнюю и верхнюю границу,
  56. // и возвращает целое случайное число из этого диапазона включительно:
  57. // Обратите внимание, что если передан один параметр (intRandom(10) в примере выше),
  58. // то функция работает как будто первый параметр равен 0,
  59. // а переданный параметр становится вторым параметром(intRandom(0, 10))
  60. // Используйте умножение для расширения значения встроенной функции Math.random c диапозона 1,
  61. // сложениe для смещения результата на первый параметр, и Math.round для округления результата
  62. // Дальше идет РАБОЧИЙ вариант, но навороченный, т.е. некрасивый
  63. // const intRandom = function (...sumArr) {
  64. // if (sumArr[0] === sumArr[1] && sumArr[0] !== undefined) return sumArr[0];
  65. // for (let i = 0; i < 2; i++) {
  66. // if (!(i in sumArr)) sumArr[i] = 0;
  67. // }
  68. // if (sumArr[0] === 0 && sumArr[1] === 0) sumArr[1] = 1;
  69. // // теперь при вызове функции вообще без параметров будет работать просто как random 0/1
  70. // sumArr.sort((a, b) => a - b);
  71. // return sumArr[0] + Math.round(Math.random() * (sumArr[1] - sumArr[0]));
  72. // };
  73. // А теперь простой и красивый (и без переданных параметров тоже будет работать 0/1)
  74. // и нам все равно на каком месте передадут максимальный и минимальный параметр
  75. const intRandom = function (min = 1, max = 0) {
  76. return min + Math.round(Math.random() * (max - min));
  77. };
  78. // ----------------------------------------------------------
  79. // greetAll
  80. // Сделайтей функцию, которая приветствует всех, кто передан в качестве параметров.
  81. // Вам поможет arguments и for
  82. function greetAll() {
  83. all = "";
  84. for (item of arguments) all += " " + item + ",";
  85. all = all.slice(0, -1);
  86. if (all) {
  87. console.log(`Hi,${all}!`);
  88. alert(`Hi,${all}!`);
  89. }
  90. }
  91. // ----------------------------------------------------------
  92. // sum
  93. // Напишите функцию sum, которая сумирует любое количество параметров:
  94. // Используйте псевдомассив arguments для получения всех параметров,
  95. // и for для итерирования по нему
  96. function sum() {
  97. var total = 0;
  98. for (let item of arguments) {
  99. total += +item;
  100. }
  101. return total;
  102. }
  103. //--------------------- UNION ---------------------------
  104. // Union
  105. // Всё предыдущие функции и примеры с ними объедините в функции,
  106. // которые вызывайте в switch по имени задания:
  107. let taskList = `
  108. a_alert
  109. cube
  110. avg2
  111. sum3
  112. intRandom
  113. greetAll
  114. sum
  115. `;
  116. function hw05_functions_union(
  117. task = (
  118. prompt("Введите название задания:\n" + taskList, "") || "0"
  119. ).toLowerCase()
  120. ) {
  121. switch (task) {
  122. case "0":
  123. {
  124. }
  125. break;
  126. case "a_alert":
  127. {
  128. a(`Привет!\n` + a);
  129. }
  130. break;
  131. case "cube":
  132. {
  133. alert(
  134. `Your number in cube iz: ` + cube(+prompt("Input number:"))
  135. );
  136. }
  137. break;
  138. case "avg2":
  139. {
  140. alert(`Среднее значение: ` + avg2(inpNumberArr()));
  141. }
  142. break;
  143. case "sum3":
  144. {
  145. alert("Сумма всех чисел = " + arrSum(inpNumberArr()));
  146. }
  147. break;
  148. case "intrandom":
  149. {
  150. alert(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
  151. console.log(
  152. `Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`
  153. );
  154. //результат может быть и не такой как в предыдущей строке alert)))
  155. alert(
  156. `Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`
  157. );
  158. console.log(
  159. `Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`
  160. );
  161. alert(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
  162. console.log(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
  163. alert(`Случайноее число в диапазоне {} ${intRandom()}`);
  164. console.log(`Случайноее число в диапазоне {} ${intRandom()}`);
  165. }
  166. break;
  167. case "greetall":
  168. {
  169. greetAll("Superman");
  170. greetAll("Superman", "SpiderMan");
  171. greetAll("Superman", "SpiderMan", "Captain Obvious");
  172. }
  173. break;
  174. case "sum":
  175. {
  176. alert(`1+2+3+4 = ` + sum(1, 2, 3, 4));
  177. }
  178. break;
  179. default:
  180. alert("Такой задачи нет");
  181. }
  182. }
  183. //--------------------- UNION Declarative---------------------------
  184. // Union declarative
  185. // Используйте ассоциативный массив вместо switch
  186. unDeclObg = {
  187. byebye: () => alert("Bye bye..."),
  188. a_alert: () => a(`Привет!\n` + a),
  189. cube: () =>
  190. alert(`Your number in cube iz: ` + cube(+prompt("Input number:"))),
  191. avg2: () => alert(`Среднее значение: ` + avg2(inpNumberArr())),
  192. sum3: () => alert("Сумма всех чисел = " + arrSum(inpNumberArr())),
  193. intrandom: () => {
  194. alert(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
  195. console.log(`Случайноее число в диапазоне {2,3} ${intRandom(2, 3)}`);
  196. //результат может быть и не такой как в предыдущей строке alert)))
  197. alert(`Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`);
  198. console.log(`Случайноее число в диапазоне {1,-2} ${intRandom(1, -2)}`);
  199. alert(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
  200. console.log(`Случайноее число в диапазоне {3} ${intRandom(3)}`);
  201. alert(`Случайноее число в диапазоне {} ${intRandom()}`);
  202. console.log(`Случайноее число в диапазоне {} ${intRandom()}`);
  203. },
  204. greetall: function () {
  205. greetAll("Superman");
  206. greetAll("Superman", "SpiderMan");
  207. greetAll("Superman", "SpiderMan", "Captain Obvious");
  208. },
  209. sum: () => alert(`1+2+3+4 = ` + sum(1, 2, 3, 4)),
  210. init() {
  211. try {
  212. this[
  213. prompt(
  214. "Введите название задания:\n" + taskList,
  215. "byebye"
  216. ).toLowerCase()
  217. ]();
  218. } catch (exept) {
  219. unDeclObg.byebye();
  220. // console.log(exept)
  221. }
  222. },
  223. };