Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
2 / 2 / 2
Регистрация: 10.11.2012
Сообщений: 124

Инвертировать массивы

07.08.2014, 22:53. Показов 3245. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть массив. Я его разбил на два. В первый поместил положительные элементы, во второй отрицательные.
Теперь эти два массива хочу инвертировать, но какая-то проблема в подпрограмме инвертации.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.util.Arrays;
 
 
public class Zadanie3 {
 
    public static void main(String[] args) {
        
        int ar [] = {-3, 4, 5 ,0 ,-5, 1, 40, -5, -8, 9, 12};
        int pol = 0;
        int otr = 0;
        int k = 0;
        int counterp = 0 ;
        int countero = 0;
        Arrays.sort(ar);
    
        
        for (int i = 0; i < ar.length; i++) {
            if (ar[i] >= 0) {
            pol = i;    
            counterp++ ;            }
            else {
            otr = i;    
            k = otr + 1 ;
            countero++;
            }
            
        }
        System.out.println(Arrays.toString(ar));
        
        
        
            int [] arpos = new int [counterp];
            int [] arneg = new int [countero];
            
            System.arraycopy(ar,0,arneg,0, arneg.length);
            System.arraycopy(ar,k,arpos,0, arpos.length);
        
        System.out.println(Arrays.toString(arneg));
        System.out.print(Arrays.toString(arpos));
        
        byfer(arneg);
        byfer(arpos);
        
        System.out.println();
        System.out.println(Arrays.toString(arneg));
        System.out.print(Arrays.toString(arpos));
        
 
    }
    
    public static void byfer (int ar[]) {
        int c = 0;
        for (int f = 0; f< ar.length/2; f++) {
            
            int buf = ar[f];
            ar[f] = ar[(ar.length - c)];
            ar[ar.length - c] = buf;
            c++;
        }
    }
 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.08.2014, 22:53
Ответы с готовыми решениями:

Инвертировать бит
Напишите программу, которая инвертирует i-ый бит в заданном числе A. Биты нумеруются с 0, начиная с младших. Входные данные Во...

Как инвертировать value to boolean
Читаем in Oracle А как это сделать? Так не получается. int x = 1; boolean bool; bool = !х;

В двоичном представлении инвертировать все одиночные единицы, кроме старшего бита
В двоичном представлении инвертировать все одиночные единицы ,кроме старшего бита.

10
 Аватар для IVIakCollideR
40 / 40 / 14
Регистрация: 26.12.2013
Сообщений: 309
08.08.2014, 00:35
попробуйте подключить мой метод для инверсии, должно работать правильно
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  public static void byfer (int ar[]) {
                int size = ar.length / 2;
                for (int i = 0; i < ar.length; i++) {
                    if (i <= size) {
                        int tmp = ar[i];
                        ar[i] = ar[ar.length - i - 1];
                        ar[ar.length - i - 1] = tmp;
                    } else {break;}
                }
                
                if (ar.length % 2 == 0) {
                    int tmp = ar[size - 1];
                    ar[size - 1] = ar[size];
                    ar[size] = tmp;
                }
    }
0
51 / 51 / 42
Регистрация: 06.09.2013
Сообщений: 188
08.08.2014, 06:17
Ньюбии, а можно воспользоваться уже готовыми средствами и не изобретать велосипед

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.*;
import java.util.stream.*;
 
public class Test {
 
    private static final int SIZE = 10;                                     //размер массива
 
    public static void init(ArrayList<Integer> arrayList) {                 //метод инициализации массива
 
        for (int i = 0; i < SIZE; ++i)
            arrayList.add((int) (-10 + Math.random() * 20));
    }
 
    public static <T extends Number> List<T> makePos(ArrayList<T> arrayList) {          //метод возвращающий список положительных чисел
 
        return  arrayList.stream().filter(value -> value.doubleValue() >= 0).collect(Collectors.toList());
    }
 
    public static <T extends Number> List<T> makeNeg(ArrayList<T> arrayList) {          //метод возвращающий список отрицательных чисел
 
        return  arrayList.stream().filter(value -> value.doubleValue() < 0).collect(Collectors.toList());
    }
 
    public static void main(String[] args) {
 
        ArrayList<Integer> array = new ArrayList<>();                   //создаем динамический массив
 
        Test.init(array);                                               //инициализируем его
        System.out.print("Array: ");
        array.forEach(value -> System.out.print(value + " "));          //выводим на консоль
        System.out.println();
 
        List<Integer> positive = Test.makePos(array);                   //получаем список положительных чисел
        System.out.print("List positive: ");
        positive.forEach(value -> System.out.print(value + " "));       //выводим его
        System.out.println();
 
        List<Integer> negative = Test.makeNeg(array);                   //получаем список отрицательных исел
        System.out.print("List negative: ");
        negative.forEach(value -> System.out.print(value + " "));       //выводим его
        System.out.println();
 
        Collections.reverse(positive);                                  //инвертируем спсиок положительных числе
        System.out.print("Inverted list positive: ");
        positive.forEach(value -> System.out.print(value + " "));       //выводим его
        System.out.println();
 
        Collections.reverse(negative);                                  //инвертируем список отрицательных чисел
        System.out.print("Inverted list negative: ");
        negative.forEach(value -> System.out.print(value + " "));       //выводим его
        System.out.println();
 
        //Если нужно перейти снова к массивам делаем так
 
        Integer[] mas_pos = new Integer[positive.size()];
        mas_pos = positive.toArray(mas_pos);
 
        Integer[] mas_neg = new Integer[negative.size()];
        mas_neg = positive.toArray(mas_neg);
    }
}
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.08.2014, 06:21
Yoghurt_92, это все равно, что Сыроежкин через Интрегалы решал задачу
0
51 / 51 / 42
Регистрация: 06.09.2013
Сообщений: 188
08.08.2014, 06:30
Wado-Ru, с чего это? кода много из-за демонстрации, а по существу главными являются пару - тройку строк, не более.
0
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.08.2014, 06:33
не думаю, что ТС на данном этапе интересуют парам-типы
0
51 / 51 / 42
Регистрация: 06.09.2013
Сообщений: 188
08.08.2014, 06:57
Wado-Ru, а причем тут параметризованные типы? главное же не в них, а в использовании библиотек.
0
 Аватар для smoke853
505 / 511 / 42
Регистрация: 12.12.2013
Сообщений: 484
08.08.2014, 10:55
Как вариант.
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.smoke;
 
import java.util.Arrays;
 
class Example {
    public static int[][] posnegArrays(int[] array) {
        int count_src_arr = array.length;
        int count_pos_arr = (int) (Arrays.stream(array).filter(x -> x >= 0).count());
        int count_neg_arr = count_src_arr - count_pos_arr;
 
        int[][] posneg_arr = new int[2][];
        posneg_arr[0] = new int[count_pos_arr];
        posneg_arr[1] = new int[count_neg_arr];
 
        for (int i = 0, p = 0, n = 0; i < count_src_arr; i++) {
            if (array[i] >= 0) {
                posneg_arr[0][p] = array[i];
                p++;
            } else {
                posneg_arr[1][n] = array[i];
                n++;
            }
        }
        return posneg_arr;
    }
 
    public static int[] reverseArray(int[] array) {
        int count_arr = array.length;
        for (int i = 0; i < count_arr / 2; i++) {
            int tmp = array[i];
            array[i] = array[count_arr - 1 - i];
            array[count_arr - i - 1] = tmp;
        }
        return array;
    }
 
    public static void main(String[] args) {
        int[] src_arr = {-3, 4, 5, 0, -5, 1, 40, -5, -8, 9, 12};
        int[] pos_arr = posnegArrays(src_arr)[0];
        int[] neg_arr = posnegArrays(src_arr)[1];
 
        System.out.println(Arrays.toString(pos_arr)); // [4, 5, 0, 1, 40, 9, 12]
        System.out.println(Arrays.toString(neg_arr)); // [-3, -5, -5, -8]
 
        System.out.println(Arrays.toString(reverseArray(pos_arr))); // [12, 9, 40, 1, 0, 5, 4]
        System.out.println(Arrays.toString(reverseArray(neg_arr))); // [-8, -5, -5, -3]
    }
}
0
2 / 2 / 2
Регистрация: 10.11.2012
Сообщений: 124
08.08.2014, 12:29  [ТС]
Товарищи) нужно указать на проблему в моей программе) а не писать свои
0
Заблокирован
08.08.2014, 12:36
Лучший ответ Сообщение было отмечено Ньюбии как решение

Решение

Ньюбии, у вас выход за границу массива, при c = 0.

Java
1
2
ar[f] = ar[(ar.length - c)];
            ar[ar.length - c] = buf;
начинайте с с = 1.
1
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
08.08.2014, 12:39
Ньюбии, IVIakCollideR, уже ответил на Ваш вопрос
уберите если хотите для простоты из его метода проверку на нечетность кол-ва элементов
и сравните с Вашим методом

кстати, это уже не первая тема с таким вопросом, которую Вы же и поднимали
и в прошлой теме тоже уже был дан правильный ответ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.08.2014, 12:39
Помогаю со студенческими работами здесь

Регулярные выражения - инвертировать регистр первого символа каждого слова длиннее 3 букв
Привет, ребят! Помогите решить задачу с регулярными выражениями, уж очень тяжко мне они даются.Буду благодарный. Задание должно быть...

Написать функцию, которая будет инвертировать любые массивы любого типа данных
Добрый день, Столкнулся с проблемой, кратко опишу ситуацию: Надо: написать функцию, которая будет инвертировать любые массивы...

инвертировать
инвертировать 3-ий и 5-ый бит в слове. как это сделать? какие команды использовать?

Инвертировать картинку
делаю графический редактор, нужно инвертировать картинку, изменить размер, сделать ее черно-белой и все. Но не могу!!!! Сижу психую,...

Инвертировать матрицу М х N
Инвертировать матрицу М х N т.е. поменять местами элементы и помогите, пожалуйста)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru