Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53

Дан случайный массив. Сформировать новый массив на основе данного, но без дубликатов

27.10.2017, 17:43. Показов 2105. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот код
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
package com.company;
import  java.lang.String;
import  java.util.Random;
class Main {
    public static void main(String[] args) {
        Random rand = new Random();
        int c=15;
        int[] a = new int[15];
        int[] b = new int[15];
        for (int i = 0; i < 15; ++i) {
            a[i] = rand.nextInt(199) -99;
            b[i]=a[i];
            System.out.print(a[i]+" ");
        }
        System.out.println();
        for (int i=0;i<15;) {
            for (int k=1;k<c;){
              if (b[i]!=b[i+k]) {
                k += 1;
              }
              if (k==c){
                  System.out.print(b[i]+" ");
              }
            }
          i++;
          c=c-1;
        }
    }
}
Почему то не печатается последний элемент -_-
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2017, 17:43
Ответы с готовыми решениями:

Дан массив В[0:n-1] целых чисел и числа x и y , где x<y. на основе элементов массива В сформировать массив D[0:m-1]
Нужен полный текст программы, заранее благодарен

Дан массив X(25). Сформировать новый массив из чисел исходного, лежащих в интервале [-3,7]
Доброго времени суток... Написание данной программы на языке (С) вызвало у меня некое затруднение,буду очень рад,если кто-то может...

Дан массив D(12). Сформировать новый массив из положительных кратных 3 чисел исходного
D(12) для более лёгкой проверки я сделал massiv. Я не знаю почему первым в massiv1 идёт 0 и не всегда корректно отображаются числа ...

5
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
27.10.2017, 18: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
 public static void main(String[] args) {
        Random rand = new Random();
        int c = 15;
        int[] a = new int[15];
        int[] b = new int[15];
        for (int i = 0; i < 15; ++i) {
            a[i] = rand.nextInt(199) - 99;
            System.out.print(a[i] + " ");
        }
        System.out.println();
        int j = 0;
        for (int i = 0; i < a.length; i++) {
            boolean isAdd = true;
            int k = 0;
            while(isAdd && k < j) {
                if (a[i] == b[k]) {
                    isAdd = false;
                }
                k++;
            }
            if (isAdd) {
                b[j] = a[i];
                j++;
            }
 
        }
        b = Arrays.copyOfRange(b, 0, j);
        System.out.println(Arrays.toString(b));
    }
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
27.10.2017, 19:13
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 public static int[] deleteDuplicates(int[] array) {
        int[] result = array != null ? Arrays.copyOf(array, array.length) : new int[0];
        if (result.length > 1) {
            int count = 0;
            for (int i = 0; i < result.length - count; i++) {
                for (int k = i + 1; k < result.length - count; k++) {
                    if (result[i] == result[k]) {
                        System.arraycopy(result, k + 1, result, k, result.length - k - 1);
                        k--;
                        count++;
                    }
                }
            }
            result = Arrays.copyOf(result, result.length - count);
        }
        return result;
    }
Добавлено через 16 минут
Вот полный код:

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
import java.util.Arrays;
import java.util.Random;
 
public class ArrayWithoutDuplicate {
    public static void main(String[] args) {
        int[] array = fillRandomArray(9, -1, 3);
        int[] result = deleteDuplicates(array);
        System.out.println(Arrays.toString(array) + "\n" + Arrays.toString(result));
    }
 
    public static int[] fillRandomArray(int length, int startRange, int endRange) {
        int[] result = length > 0 ? new int[length] : new int[0];
        if (length > 0) {
            Random rand = new Random();
            for (int i = 0; i < length; i++) {
                result[i] = rand.nextInt(Math.abs(startRange - endRange) + 1) + startRange;
            }
        }
        return result;
    }
 
    public static int[] deleteDuplicates(int[] array) {
        int[] result = array != null ? Arrays.copyOf(array, array.length) : new int[0];
        if (result.length > 1) {
            int count = 0;
            for (int i = 0; i < result.length - count; i++) {
                for (int k = i + 1; k < result.length - count; k++) {
                    if (result[i] == result[k]) {
                        System.arraycopy(result, k + 1, result, k, result.length - k - 1);
                        k--;
                        count++;
                    }
                }
            }
            result = Arrays.copyOf(result, result.length - count);
        }
        return result;
    }
}
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
27.10.2017, 19:31
Java
1
2
3
4
5
6
7
8
    public static void main(String[] args) {
 
        int[] a = new Random().ints(-99, 100).limit(15).toArray();
        int[] b = Arrays.stream(a).distinct().toArray();
 
        System.out.println(Arrays.toString(a) + "\n" + Arrays.toString(b));
 
    }
1
1 / 1 / 0
Регистрация: 16.09.2017
Сообщений: 53
28.10.2017, 00:26  [ТС]
А можно эти строчки
Java
1
2
b = Arrays.copyOfRange(b, 0, j);
System.out.println(Arrays.toString(b));
Заменить на простой вывод массива b ?
Java
1
2
for (int i = 0; i < 15; ++i) {
            System.out.print(b[i]+" ");
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
28.10.2017, 00:47
Лучший ответ Сообщение было отмечено Dobriy_Bobr как решение

Решение

Цитата Сообщение от Dobriy_Bobr Посмотреть сообщение
b = Arrays.copyOfRange(b, 0, j);
j хранит количество найденных уникальных элементов. В итоге в b останутся только уникальные элементы и длинна массива будет равна j.
Если же закомментировать эту строку, то длинна массива b будет всегда 15 (в Вашем примере). Допустим массив а состоит из 15-ти одинаковых элементов. Тогда в массиве b элемент с нулевым индексом будет равен уникальному элементу из а, а остальные элементы массива b будут нули. А еще лучше задайте массив a с дублями и посмотрите на вывод с указанной строкой и без.



Это
Цитата Сообщение от Dobriy_Bobr Посмотреть сообщение
System.out.println(Arrays.toString(b));
можете заменить на
Java
1
2
for (int i = 0; i < b.length; i++) {
  System.out.print(b[i]+" ");
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2017, 00:47
Помогаю со студенческими работами здесь

Дан массив X(10). Сформировать новый массив из четных чисел исходного
Помогите, кому не сложно, спасибо заранее :)

Дан массив B(21) Сформировать новый массив из кратных 4 чисел исходного
Дан массив B(21) Сформировать новый массив из кратных 4 чисел исходного. Мальчики, помогите пожалуйста с задачей, программирование вообще...

Дан массив из 25 элементов. Сформировать из него новый массив, элементы которого кратны 5
Помогите решить задачу. Дан массив из 25 элементов. Сформировать из него новый массив, элементы которого кратны 5.

Дан массив X(N). Сформировать новый массив, выбросив из исходного все элементы с наименьшим значением.
Помогите, пожалуйста, решить. И если можно, то поподробнее, а то что-то мало понимаю массивы...(

Дан двумерный массив. Сформировать одномерный массив, каждый элемент которого равен количеству элементов строки, больших данного числа
1)Дан двумерный массив размерностью 4х6, заполненный целыми числами, введенными с клавиатуры. Сформировать одномерный массив, каждый...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru