Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/140: Рейтинг темы: голосов - 140, средняя оценка - 4.85
1 / 1 / 3
Регистрация: 07.10.2015
Сообщений: 16

Сравнение элементов одномерного массива

07.03.2016, 02:41. Показов 25971. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане. Прошу помочь с кодом, а именно указать, в чем моя ошибка и чего не хватает. Очень прошу с объяснением, я хочу разобраться во всем.
Задание следующие: Дан одномерный массив 2, 4, 6, 2, 1, 4, 6, необходимо вывести значение элемента массива у которого нету пары. В данной задаче пары нету только у элемента массива - 1. Ход моих мыслей таков, сначала я проверяю начальный элемент массива на наличие пары, если я нашел ему пару, то начинаю искать пару для последнего элемента массива, если нашел и для него пару, начинаю искать пару элементам начиная с 2 элемента массива до предпоследнего. Чего мне не хватает, или где ошибка, чтобы на выходе было значение без пары - 1? Заранее спасибо всем, кто откликнется.
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
package massive;
public class massive 
{
    public static void main(String[] args)
    {
        int i;      
        int[] mas;
        mas=new int[] {2, 4, 6, 2, 1, 4, 6};        
        for(i = 1; i<=mas.length-1; i++)
        {
            if (mas[0] == mas[i]) 
            {
                for(i = 5; i<=mas.length-1; i--)
                {
                    if (mas[6] == mas[i])
                    {
                        for(i = 2; i<=mas.length-2; i++)
                        {
                            if(mas[i] == mas[i+1] || mas[i] == mas[i-1])
                            {
                                System.out.println("Znacheniy bez pari net");
                            }
                            else {System.out.println(mas[i]);}
                        }
                    }
                    else {System.out.println(mas[6]);} 
                }
            }
            else {System.out.println(mas[0]);}          
        }       
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.03.2016, 02:41
Ответы с готовыми решениями:

Среднее геометрическое элементов одномерного массива
В одномерном массиве вычислить:а) Среднее геометрическое элементов и б) определить элемент (значение и номер), наиболее близкий по...

Подсчитать количество положительных элементов одномерного массива
Подсчитать количество положительных элементов одномерного массива, содержащего 10 значений.

Сумма элементов одномерного массива до и после максимума
Здраствуйте, помогите разобраться с заданием:( Задание: Имеется массив чисел. Необходимо ответить на вопрос: «Какая сумма элементов...

7
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
07.03.2016, 03:10
Цитата Сообщение от VasyaBeton Посмотреть сообщение
Чего мне не хватает, или где ошибка, чтобы на выходе было значение без пары - 1?
слишком замудрено решаете задачу, все гораздо проще. Если у вас есть такая куча for-ов и if-ов, значит подход к решению 99% неверен.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int i = 0;      
        int[] mas;
        mas=new int[] {2, 4, 6, 2, 1, 4, 6, 5, 6};
        
        Arrays.sort(mas);
        
        while (i < mas.length)
        {
            if (i == mas.length-1) {
                System.out.println(mas[i++]);
                break;
            }
            if (mas[i] == mas[i+1]) i+=2;
            else System.out.println(mas[i++]);
        }
1
1 / 1 / 3
Регистрация: 07.10.2015
Сообщений: 16
07.03.2016, 03:29  [ТС]
КОП, спасибо большое за решение. Не могли бы мне пояснить 5 строку, и команды цикла while.
Я так понимаю, в первом if элемент массива с индексом i будет сравниваться со всеми элементами массива, но что он выводит, не понимаю, почему после после mas идет i++, будет выведен элемент i+1? ?

Во втором if, элемент массива сравнивается с последующим, если он находит пару то что происходит?

Еще раз спасибо за решение, прошу объяснить, я плаваю в этом конкретно, хочу разобраться.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
07.03.2016, 03:59
Цитата Сообщение от VasyaBeton Посмотреть сообщение
хочу разобраться.
это всегда пожалуйста! Возникнут еще вопросы - задавайте.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int i = 0;      
        int[] mas;
        mas=new int[] {2, 4, 6, 2, 1, 4, 6, 5, 6};
        
        Arrays.sort(mas); //Arrays - идет в комплекте с java, позволяет творить всякие штуки с массивами, в данном случае просто сортирует (можете ознакомиться в интернете с остальными методами, вдруг что понадобится, а вы уже знаете где искать)
        
        while (i < mas.length) //проходим по нашему отсортированному массиву
        {
            if (i == mas.length-1) {
                //этот if сработает только на последнем элементе и выйдет из цикла, предохраняет от выхода за 
                //пределы массива, т.к. далее в коде стоит mas[i+1]
                System.out.println(mas[i++]); //выведет последний элемент (i++ можно просто i, без разницы, по привычке написал)
                break; //покинет цикл
            }
            if (mas[i] == mas[i+1]) i+=2; //эта штука проверяет, имеет ли текущий элемент пару (массив отсортирован,
                 //значит если пара есть, то она как раз в следующем элементе массива
                 //при этом i+=2 значит, что найдена пара и мы ее пропускаем
            else System.out.println(mas[i++]);
                 //если пара не найдена - выводим текущий элемент и переходим к следующему
        }
1
Заблокирован
07.03.2016, 09:15
Java
1
2
3
4
5
6
7
8
 int[] init = {2, 4, 6, 2, 1, 4, 6};
 
        Arrays.stream(init)
                .boxed()
                .collect(Collectors.groupingBy(x -> x))
                .forEach((key, value) -> {
                    if (value.size() % 2 != 0) System.out.println(key);
                });
1
1 / 1 / 3
Регистрация: 07.10.2015
Сообщений: 16
09.03.2016, 12:38  [ТС]
Добрый день, КОП. Сижу на работе разбираюсь с задачками, хотел бы уточнить некоторые моменты по старой задаче. Возвращаясь к своему вопрос о методе sort. Каким образом Arrays.sort(mas) сортирует данный массив, не могли пояснить?

Добавлено через 25 минут
И немножко не понимаю, почему при выводе написано mas[i++] ? почему не просто mas[i]? Хотя пробовал изменять без наращения - выводит не то, что надо. Не могли бы пояснить, КОП, заранее спасибо большое!
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
09.03.2016, 13:41
Цитата Сообщение от VasyaBeton Посмотреть сообщение
Добрый день, КОП. Сижу на работе разбираюсь с задачками, хотел бы уточнить некоторые моменты по старой задаче. Возвращаясь к своему вопрос о методе sort. Каким образом Arrays.sort(mas) сортирует данный массив, не могли пояснить?
Принцип черного ящика знаком? Как он сортирует - не важно, до тех пор пока сортирует верно. Конкретную реализацию можно поискать в документации, но надо ли голову забивать.
Цитата Сообщение от VasyaBeton Посмотреть сообщение
И немножко не понимаю, почему при выводе написано mas[i++] ? почему не просто mas[i]? Хотя пробовал изменять без наращения - выводит не то, что надо. Не могли бы пояснить, КОП, заранее спасибо большое!
потому что надо перейти к следующему элементу. В первом ифе это не важно, т.к. там дальше идет break (см. комменты), а во втором где else System.out.println(mas[i++]); обязательно надо. Иначе получится, что программа найдет уникальный элемент и засядет в бесконечном цикле, т.к. i больше никогда не изменится.

На все случаи жизни: запускаем отладчик и проходим по непонятному куску программы, пару раз с i и пару раз c i++.

PS: как только разберетесь с алгоритмом, переходите на вариант Dsasdf и будет вам счастье)
1
1 / 1 / 3
Регистрация: 07.10.2015
Сообщений: 16
09.03.2016, 14:13  [ТС]
КОП, спасибо большое за разъяснение, все понятно! Успехов вам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.03.2016, 14:13
Помогаю со студенческими работами здесь

Найти произведение нечетных элементов целочисленного одномерного массива
Здравствуйте! Помогите, пожалуйста с данной задачей: Найти произведение нечетных элементов целочисленного одномерного массива с четными...

Почему не срабатывает сравнение элементов массива?
Доброго всем! Вот чего-то тут затупил я на ровном месте, может кто подскажет чего дельное? Простая, вроде бы, ситуация: сгенерировать...

Элементы одномерного массива циклически сдвинуть на пять элементов вправо
Здравствуйте!мне очень нужна ваша помощь,в интситуте начали изучать Java. Вот одно из заданий:Элементы одномерного массива циклически...

Подсчет числа повторяющихся простых элементов одномерного целочисленного массива
Помогите, выполнить подсчета числа повторяющихся простых элементов одномерного целочисленного массива А.

Найти произведение только однозначных и четных элементов одномерного массива
Дан одномерный массив из 10 натуральных чисел. Найти произведение только однозначных и четных элементов.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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