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

  • 4
  • Недоступна
Жил-был массив, и был он большой. В какой-то степени, разумеется. И были у него два приятеля-массива, которые были вдвое меньше. Наша задача — манипуляция этими ребятами. Числа из большого массива мы должны перенести в два маленьких (в порядке очереди), а затем второй маленький массив вывести на экран. Справитесь?
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (125)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Artem Pavlov7 уровень, Санкт-Петербург
четверг, 03:11
/*Метод System.arraycopy() принимает несколько параметров. Первым параметром является массив-источник. Вторым параметром является позиция начала нового массива. Третий параметр — массив-назначения. Четвертый параметр является начальным положением целевого массива. Последний параметр это количество элементов, которые будут скопированы.*/ System.arraycopy (numbers, 0, numbers2, 0, 10); System.arraycopy (numbers, 10, numbers3, 0, 10);
Red Lee16 уровень, Москва
27 декабря 2018, 23:13
Данный код не проходит проверку: int[] numBig = new int[20]; int[] num1 = new int[numBig.length / 2]; int[] num2 = new int[numBig.length / 2]; нужно явно указать int[] num1 = new int[10];
Riccio14 уровень, Москва
12 октября 2018, 13:10
Хорошая статья про класс Arrays. Если лаконичнее суть:
int[] numbersTwo = new int[10];
numbersTwo = Arrays.copyOfRange(numbers, 10, 20);
Совет: если сказано, что программа должна создавать массивы - надо создавать массивы.
y-grek8 уровень, Киев
1 декабря 2018, 18:48
читнул о системном System.arraycopy чтоб не подгружать util.*
System.arraycopy(big, 0, small1, 0, 10);
System.arraycopy(big, 10, small2, 0, 10);
а на сайте запуск без проверки выдавал кучу ошибок, чуть голову не сломал.. оказалось ошибка на сайте, этот же код в идеа прошел на ура..
Антон17 уровень
7 августа 2018, 12:01
Сразу в голову пришла такая реализация:
for(int i = 0; i < 10; i++) {
            array10_1[i] = array20[i];
            array10_2[i] = array20[10 + i];
            System.out.println(array10_2[i]);
        }
Потом возможные доделки увидел:
for(int i = 0; i < 10; i++) {
            array10_1[i] = array20[i];
            array10_2[i] = array20[array10_1.length + i]; \\Точно известно с какого элемента большого массива нужно заполнять следующий.
            System.out.println(array10_2[i]);
        }
Олег13 уровень, Екатеринбург
16 сентября 2018, 19:23
Тоже подумал что в одном цикле можно заполнять 2 массива
Алексей8 уровень, Москва
11 ноября 2018, 02:13
интересны конечно все эти упрощения.
Juris 8 уровень
4 декабря 2018, 10:21
одновременно можно сразу заполнить все 3 массива + вторым циклом вывод на экран
Иван10 уровень, Москва
31 июля 2018, 21:26
public static void main(String[] args) throws Exception { //напишите тут ваш код int[] a = new int[20]; int[] b = new int[10]; int[] c = new int[10]; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); for (int i = 0; i < a.length; i++) { a[i] = Integer.parseInt(reader.readLine()); if (i < 10) { b[i] = a[i]; } if (i >= 10) { c[i - 10] = a[i]; } } for (int i = 0; i < 10; i++) { System.out.println(c); Почему этот код проходит, но выводит совсем не то, что нужно? А именно: [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c [I@4554617c
Дарья Шилова9 уровень
25 октября 2018, 12:13
Потому что выводить надо не массив, а его элемент: System.out.println(c[i]);
Putinich9 уровень, Москва
31 июля 2018, 16:41
Я постарался "автоматизировать" и не прописывать вручную длины массивов, а также что бы циклы сами определяли количество итераций: /* Валидацию, вариант создания маленьких массивов через деление размера большого массива, не проходит, так как там четко указан размер -10, а так все работает :) */ int[] bigArr = new int[20]; int[] smallArr1 = new int[bigArr.length/2]; int[] smallArr2 = new int[bigArr.length/2]; Scanner scan = new Scanner(System.in); //заполняем большой массив for (int i = 0; i < bigArr.length; i++) { bigArr[i] = scan.nextInt(); } //заполняем первый маленький for (int i = 0; i < smallArr1.length; i++) { smallArr1[i] = bigArr[i]; } //заполняем второй маленький - здесь пришлось помучится с индексами большого массива for (int i = 0; i < smallArr2.length; i++) { smallArr2[i] = bigArr[i+smallArr1.length]; } // выводим маленький for (int i = 0; i < smallArr2 .length; i++){ System.out.println(smallArr2[i]); }
Eugen19 уровень
27 июня 2018, 15:38
жалко нет метода Arrays.add, увидел поже arraycopy тоже классно.
анастасия11 уровень, Москва
21 июня 2018, 20:42
2 1 2 3 4 5 4 3 2 1 [I@6ec8211c а что это за белиберда в конце вывелась??чет не пойму
анастасия11 уровень, Москва
21 июня 2018, 20:53
разобралась)
RellePro9 уровень
1 июня 2018, 09:17
System.arraycopy - копирование массива - идеально подходит для данной задачи, я ленивый - не люблю рисовать много кода))
Ivan7 уровень, Москва
26 февраля 2018, 10:45
Вообще не очень пойму почему только на 7м уровне пошли массивы, а когда будет Наследование и Полиморфизм?
Vlattka16 уровень, Харьков
20 марта 2018, 00:31
После 10-го