Advertisement
Timkor

testTaskArrayModif

Sep 17th, 2020 (edited)
1,234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Напишите функцию, которая на вход принимает два массива одинаковой длинны + параметр, описывающий собственно их длинну; и модифицирует их таким образом, что в первом массиве в каждой i-той ячейке находится разница этой ячейки и соответствующей i-той ячейки второго массива, а во втором массиве в каждой i-той ячейке находится сумма этой ячейки и соответствующей i-той ячейки первого массива.
  3. */
  4.  
  5. /* супер важно понимать что значит функция принимает и функция возвращает, так вот принимает функция некоторые параметры , которые в нее передаются при ее вызове, т.е. принимает два массива и параметр длинну, это значит
  6. function arrayModify (arr1, arr2, arrLength){...}
  7.  
  8. а вызывать вот так:
  9. array1 = [1,3,6,87,9]; // массивы созданы вне функции
  10. array2 = [3,5,88,2,1];
  11. arrayModify(arr1, arr2, 5); //массивы указаныв функции в качестве аргументов,  и будут приняты ее параметрами*
  12.  
  13. *на самом деле аргументы и параметры не одно и то же, но многие не разделяют их, есть еще названия параметры и формальные
  14. параметры, в общем не критично, но ... однажды понять кто есть кто стоит. а потом можно все называть параметрами.
  15.  
  16. после такого вызова в переменные arr1 & arr2 внутри функции уже попадут переданные ей массивы, ну а в переменную arrLength
  17. попадет переданная пятерочка - длинна массивов и с ними внутри функции и нужно работать
  18.  
  19. Теперь про то, что функция возвращает. В данном задании не сказано , что функция должна вернуть, здесь сказано
  20. модифицировать. Тут есть два важнейших момента: 1 return result; именно такая строка с командой return возвращает
  21. из функции значение, т.е. как бы подставляет его в место вызова функции.
  22. function sum(a, b) {
  23.     return a + b;
  24. }
  25.  
  26. console.log('40 + 2 = ' + sum(40, 2));
  27.  
  28. И второй момент: вернуть можно одно значение, ретурн не умеет возвращать больше одной переменной, конечно можно сложить
  29. в массив результаты, и вернуть массив , но это другая история. В данном задании массивы принимаем параметрами, модифицируем  и... не возвращаем. А почему не возвращаем? Да потому , что есть понятие передачи значений по значению, а есть по ссылке. Почитайте про это.  Почитали?)) Хорошо,действительно, массивы передаются по ссылке, т.е. модифицируя внутри функции переданные ей (и соответственно принятые ей) массивы, вы изменяете на самом деле те же самые массивы, оригиналы, не копии. Поэтому можно не возвращать из функции принятые по ссылке массивы, ведь изменяя их внутри  функции вы меняете те же , что и снаружи.
  30.  
  31. function modify(arr){
  32.   arr[0] = 'теперь ';
  33.   arr[1] = 'я '
  34.   arr[2] = 'чебурашка'
  35. }
  36.  
  37. let array1 =  [1,2,3];
  38.  
  39. modify(array1);
  40.  
  41. for(let i =0; i < array1.length; i++){
  42.   console.put(array1[i]);
  43. }
  44.  */
  45.  
  46. let arrLength = prompt ("Введите размер массива: ");            
  47. function arrayModify (arrLength) {              //объявление функции
  48. let array1 = [];                        //Первый массив для данных
  49. let array2 = [];                        //Второй массив для данных
  50. let arryModify = [];                        //Промежуточный массив для модификации.
  51.  
  52.  
  53. for (let i = 0; i < arrLength; i++) {               //заполнение массива №1 не пройдет тест, функция должна принять, не ваша
  54.     array1[i] = +prompt("Введите данные массива №1") // забота кто их введет и как, ваша функция просто принимает их
  55. }
  56. for (let i = 0; i < arrLength; i++) {               //вывод данных массива №1 - не нужно, в задании не сказано, может
  57.     console.put (array1[i] + " ")                   // не пройти тест.
  58. }
  59. console.log();
  60.  
  61. for (let i = 0; i < arrLength; i++) {               //заполнение массива №2 ровно тоже
  62.     array2[i] = +prompt("Введите данные массива №2")
  63. }
  64. for (let i = 0; i < arrLength; i++) {               //вывод данных массива №2 и еще раз
  65.     console.put (array2[i] + " ")
  66. }
  67. console.log();      
  68.  
  69. for (let i = 0; i < arrLength; i++) {               //копирование данных с 1 массива в модиф  все модификац циклы можно
  70.     arryModify[i] = array1[i]                       // совместить в одном, будет норм.
  71. }
  72.  
  73.  
  74. for (let i = 0; i < arrLength; i++ ) {              //создание модифиц массива №1
  75.     array1[i] = arryModify[i] - array2[i]
  76. }
  77. console.log();
  78.  
  79. console.log("Первый массив после модификации");         //вывод данных модифиц массива №1 - это не пройдет тест
  80. for (let i = 0; i < arrLength; i++) {
  81.     console.put (array1[i] + " ")
  82. }
  83. for (let i = 0; i < arrLength; i++ ) {              //создание модифиц массива №2
  84.     array2[i] = array2[i] + arryModify[i]
  85. }
  86. console.log();
  87. console.log("Второй массив после модификации");         //вывод данных модифиц массива №2 - не надо выводить , этого не тре-
  88. for (let i = 0; i < arrLength; i++) {                   // бует условие
  89.     console.put (array2[i] + " ")
  90. }
  91. }
  92.  
  93. //тут можно создавать массивы
  94. console.log(arrayModify(arrLength));                //вызов функции
  95. //вот тут можно и выводить, но в задании не надо будет вовсе этого делать, надо тольок написать функцию! Даже вызывать ее не надо будет.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement