JavaRush/Java блог/Архив info.javarush/Кухня(); Задание N37.
terranum
28 уровень

Кухня(); Задание N37.

Статья из группы Архив info.javarush
участников
Кухня(); Задание N37. - 1 Правила [Одномерные массивы] 37. Задан массив с количеством элементов N. Сформируйте два массива: в первый включите элементы исходного массива с четными номерами, а во второй – с нечетными.
Комментарии (9)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Vash_the_Stampede
Уровень 11
6 сентября 2014, 14:54
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {
        int[] arr = { 0, 1, 2, 3, 4, 5, 6 };
        int[][] res = solve(arr);
        System.out.println(Arrays.toString(res[0]));
        System.out.println(Arrays.toString(res[1]));
    }
	
	public static int[][] solve(int[] arr) {
	    int n = arr.length;
        int[][] res = new int[][] { new int[n + 1 >> 1], new int[n >> 1] };
        for (int i = 0; i < n; i++) {
            res[i & 1][i >> 1] = arr[i];
        }
        return res;
    }

}
aiv
Уровень 27
7 сентября 2014, 19:09
В задаче нужно сформировать два массива, а не один двухмерный. Так что это решение не совсем верное. Или я не прав?
Vash_the_Stampede
Уровень 11
7 сентября 2014, 19:25
ну, условия не такие уж и жесткие. Мой двумерный массив состоит из двух одномерных, буде считать, что я их сформировал. Плюс, метод не может же вернуть две отдельные ссылки напрямую.
aiv
Уровень 27
7 сентября 2014, 20:11
В принципе, можно считать и так. Возвращает массив из двух массивов.
Juggee
Уровень 17
5 сентября 2014, 15:09
for (int i = 0; i < largeArray.length/2; i++)
        {
            resArray1[i] = largeArray[2 * i];
            resArray2[i] = largeArray[2 * i +1];
        }
Juggee
Уровень 17
5 сентября 2014, 15:49
Сори, поспешил. Решение неуниверсально:) может так лучше?
int largeArray[] = {~};
        int halfLength = (int) Math.ceil(largeArray.length/2.0);
        int[] resArray1 = new int[halfLength];
        int[] resArray2 = new int[largeArray.length/2];
        int count = 0;
        for (int i = 0; i < halfLength; i++)
        {
            resArray1[i] = largeArray[2 * i]; count++;
            if (count == largeArray.length) break;
            resArray2[i] = largeArray[2 * i +1]; count++;
        }
terranum
Уровень 28
6 сентября 2014, 10:47
Думаю стоит начать, со структуры метода, или методов. Надо же как то вернуть все это дело.
Juggee
Уровень 17
6 сентября 2014, 12:14
Не совсем понял замечание. ОФормить полностью как рабочий класс, с выводом и погремушками? Первый раз отвечаю на кухне(); просветите, пожалуйста. Выложил ключевой кусок реализации алгоритма.
Docktor91
Уровень 40
6 сентября 2014, 13:03
Сделайте рабочий метод