Форум программистов, компьютерный форум CyberForum.ru

Найти и вывести уникальные элементы массива - C++

Восстановить пароль Регистрация
 
Cmiki
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 5
21.08.2016, 14:11     Найти и вывести уникальные элементы массива #1
3. В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peoples
725 / 385 / 343
Регистрация: 06.02.2016
Сообщений: 1,021
Записей в блоге: 10
Завершенные тесты: 3
21.08.2016, 15:26     Найти и вывести уникальные элементы массива #2
C++
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
    srand(time(NULL));
    const int k=10;
    int a[k];
    for(size_t i=0; i<k; i++) {
        a[i]=rand()%20;
        cout<<a[i]<<" ";
    }
    cout<<endl;
    for(size_t i=0; i<k; i++) {
        int n=0;
        for(size_t j=0; j<k; j++) {
            if(a[i]!=a[j]) {
                n++;
            }
        }
        if(n==k-1) {
            cout<<a[i]<<" ";
        }
    }
 
    return 0;
}
lawr
 Аватар для lawr
352 / 246 / 121
Регистрация: 09.05.2014
Сообщений: 743
22.08.2016, 16:06     Найти и вывести уникальные элементы массива #3
Peoples, ябтак сделал:
C++
1
2
3
4
5
6
7
for(size_t i=0; i<k; i++) {
        size_t j=0;
        while (a[i]!=a[j]&&i!=j)
           j++;
        if(j==k) 
            cout<<a[i]<<" ";
    }
DevAlone
71 / 71 / 21
Регистрация: 02.08.2016
Сообщений: 298
Завершенные тесты: 2
22.08.2016, 16:34     Найти и вывести уникальные элементы массива #4
Придумал вот такой велосипед)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename T>
std::vector<T> find_unique(std::vector<T> array) {
    for (int i = 0; i < array.size(); i++) 
    {
        bool unique = true;
        for(int j = i+1; j < array.size(); j++)
        {// перебираем все элементы дальше i-го
            if(array[i] == array[j])// если нашли такой же
            {
                unique = false;// ставим флаг в false
                array.erase(array.begin()+j);//удаляем элемент
                j--;
            }
        }
        if(!unique)//если элемент оказался не уникальным
        {
            array.erase(array.begin()+i);//удаляем из вектора
            i--;
        }
    }
    return array;
}
Добавлено через 6 минут
Цитата Сообщение от lawr Посмотреть сообщение
C++
1
2
3
4
5
6
7
for(size_t i=0; i<k; i++) {
        size_t j=0;
        while (a[i]!=a[j]&&i!=j)
           j++;
        if(j==k) 
            cout<<a[i]<<" ";
    }
и как это должно работать?
Avazart
 Аватар для Avazart
6905 / 5145 / 253
Регистрация: 10.12.2010
Сообщений: 22,630
Записей в блоге: 17
22.08.2016, 16:36     Найти и вывести уникальные элементы массива #5
DevAlone, http://en.cppreference.com/w/cpp/algorithm/unique там же чуть ниже пример кода.
DevAlone
71 / 71 / 21
Регистрация: 02.08.2016
Сообщений: 298
Завершенные тесты: 2
22.08.2016, 16:46     Найти и вывести уникальные элементы массива #6
Я думал про сортировку, но быстро ли она будет выполняться?
Babysitter
 Аватар для Babysitter
78 / 103 / 34
Регистрация: 23.11.2015
Сообщений: 315
Завершенные тесты: 1
22.08.2016, 16:57     Найти и вывести уникальные элементы массива #7
если производительность не играет роли, то можно и так
C++
1
2
3
4
    std::set<int> uniq(std::begin(A), std::end(A));
    for (auto i : uniq)
        std::cout << i << " ";
    std::cout << std::endl;
Добавлено через 9 минут
точнее так
C++
1
2
    for (auto i : std::set < int > { std::begin(A), std::end(A) })
        std::cout << i << " ";
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 17:10     Найти и вывести уникальные элементы массива
Еще ссылки по теме:

Заменить уникальные элементы матрицы нулями C++
Найти одинаковые элементы массива и вывести на экран индексы этих элементов C++
C++ Вывести уникальные элементы массива

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6905 / 5145 / 253
Регистрация: 10.12.2010
Сообщений: 22,630
Записей в блоге: 17
22.08.2016, 17:10     Найти и вывести уникальные элементы массива #8
Цитата Сообщение от DevAlone Посмотреть сообщение
Я думал про сортировку, но быстро ли она будет выполняться?
А поиск по не отсортированному массиву перебором быстро выполняется?

В конечном счете все будет зависеть от исходной последовательности, насколько она рандомная.
Yandex
Объявления
22.08.2016, 17:10     Найти и вывести уникальные элементы массива
Ответ Создать тему
Опции темы

Текущее время: 15:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru