Один большой массив и два маленьких

  • 5
  • Недоступна
Жил-был массив, и был он большой. В какой-то степени, разумеется. И были у него два приятеля-массива, которые были вдвое меньше. Наша задача — манипуляция этими ребятами. Числа из большого массива мы должны перенести в два маленьких (в порядке очереди), а затем второй маленький массив вывести на экран. Справитесь?
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (274)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Алексей Соловьев 10 уровень, Одесса
10 января, 21:48
походу не хватает мне фантазии, решал по старинке BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int[] mas = new int[20]; for(int i = 0; i<mas.length;i++){ mas[i] = Integer.parseInt(reader.readLine()); } int[] mas1 = new int[10]; int[] mas2 = new int[10]; for(int i = 0;i<10;i++){ mas1[i] = mas[i]; mas2[i] = mas[i+10]; System.out.println(mas2[i]); }
Денис Кочетов Technical Lead в СП62
8 января, 11:00
Можно поиграть с разными вариациями методов утилитарного класса Arrays
arr1 = Arrays.copyOf(arrNum, 10);
arr2 = Arrays.copyOfRange(arrNum, 10, arrNum.length);
Обратите внимание, что до этой задачи в курсе уже были ссылки на статьи с описание работы методов класса Arrays и подразумевается, что вы их внимательно прочитали. Если пропустили, то вот: класс для работы с массивами Arrays
Карбофос Огарин 7 уровень, Санкт-Петербург
16 января, 13:52
ТАк валидатор агрится на использование Arrays.copyOf Range, в плане того, что нужно 2 отдельных массива создать с 10 элементами.
Денис Кочетов Technical Lead в СП62
17 января, 07:05
В нетбинсе и джавараше всё хорошо. Без ошибок.
Maksim Volkov 8 уровень
17 декабря 2020, 15:14
Можно решить через два for. 1. 1-ый for. Загоняем через ридер 20 чисел в массив. Тут всё понятно вопросов не должно возникнуть. 2. Делаем 2-й for на 10 циклов, или длину маленького массива. Две строчки, первая - копируем числа из индексов которые равны номеру цикла. Вторая - копируем числа во второй малый массив (с индексом равным номеру цикла) из большого (номер цикла + 10). Пример: малыйМассив1 [ i ] = большойМассив [ i ]; малыйМассив2 [ i ] = большойМассив [ i + 10 ]; Мы вместо того что бы писать еще один for просто обращаемся к номеру индекса и добавляем 10, то есть второй половине большого массива. На нулевой итерации цикла for (где i = 0;) мы обратимся сразу к десятом числу в большом массиве. Там же во втором цикле for сразу пишем sout (маллыйМассив2[ i ]); Надеюсь объяснил понятно.
lightning 12 уровень
22 ноября 2020, 17:50
Валидатор в таком виде не пропускает:
int[] smallArray1  = Arrays.copyOfRange(bigArray,0,bigArray.length/2);
int[] smallArray2  = Arrays.copyOfRange(bigArray,bigArray.length/2, bigArray.length);
при том, что вывод в консоль показывает, что у обоих массивов длина - 10. Зато вот так его полностью устраивает:
int[] smallArray1 = new int[10];
smallArray1 = Arrays.copyOfRange(bigArray,0,bigArray.length/2);
int[] smallArray2 = new int[10];
smallArray2 = Arrays.copyOfRange(bigArray,bigArray.length/2, bigArray.length);
Ну ок, идем дальше.
Сергей Осиков 9 уровень, Санкт-Петербург
9 ноября 2020, 18:55
Задача простая. Помогла статейка
Leonid_88_R 14 уровень, Domodedovo
25 ноября 2020, 20:25
Спасибо, лучшая подсказка, что-бы самому разобраться👍
Тихон 8 уровень
11 декабря 2020, 20:43
https://www.cyberforum.ru/java-j2se/thread1799241.html Смотрел на этом сайте, интересные решения.
Имя Фамилия 12 уровень, Москва
2 ноября 2020, 10:51
Смотрю в комментариях, почти все пишут половину массива через число 10 в явном виде if ( i < 10 ), а почему нельзя указывать как 1/2 массива if ( i < BigMass.length/2 ) ? Не, я знаю, что на самом деле так можно и я так и сделал, просто интересно чем лучше указывать явное значение, чем относительное ? Элеемнтарно меньше на клаве набирать ? Или в настоящих программах работает значительно быстрее за счёт того, что алгоритму не надо ходить каждый раз длину массива мерять (а потом ещё и умножать на 1/2) ?
Денис 16 уровень, Владимир
13 ноября 2020, 16:05
"плясать" от длины массива правильнее. Дальше будут массивы с неизвестной заранее длиной. Я и во втрой массив заносил в одном цикле с первым num.length/2 + i. Все сработало.
Олексій Моцьор 14 уровень
28 октября 2020, 19:21
Создал три масива. Один большой, два по 10, Потом System.arraycopy(number,0, number1, 0, 10); System.arraycopy(number, 10, number2, 0, 10);
Борис 14 уровень, Санкт-Петербург
9 октября 2020, 13:11
Подсказка: Второй цикл начать с 10 индекса от большого массива ( int b ) Записывать в 0 индекс третьего массива, путем int a = 10; b = a - b;
Volodymyr Bilenkyi 8 уровень, Ivano-Frankivsk
9 октября 2020, 06:13
Решил через три for: 1) Заполнения большого массива. 2) Присваивание первому маленькому первих 10 значений большого (обычное присваивание, только исходя из длины маленького) 3) Изначально ввел интовою переменную = 0, цикл начинаем из 10. Но теперь присваиваем второму маленькому из индексом введеной переменной следующые значения большого массива. Затем выводим принтом второй массив и уже ПОСЛЕ делаем перемнная ++. Очень простое решение :)
DAS 8 уровень, Москва
27 октября 2020, 14:47
если в два цикла, то первый - заполняем max массив, во втором min1[i] = max[0+i]; min2[i] = max[10+i]; Выводим нужный по условиям задачи.
Gennady Filimonov 18 уровень
7 октября 2020, 16:07
Почему не работают команды из лекции https://javarush.ru/groups/posts/1933-klass-arrays-i-ego-ispoljhzovanie int [] numbersCopy = Arrays.copyOf(numbers, 4); System.out.println(Arrays.toString(numbersCopy));
Gennady Filimonov 18 уровень
10 октября 2020, 20:14
Спасибо за развернутый ответ)