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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cmiki
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 5
#1

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

21.08.2016, 14:11. Просмотров 348. Ответов 7
Метки нет (Все метки)

3. В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2016, 14:11     Найти и вывести уникальные элементы массива
Посмотрите здесь:
C++ Вывести уникальные элементы массива
C++ Найти уникальные элементы массива
C++ Вывести на экран "уникальные" элементы массива
C++ Найти уникальные элементы в массиве
C++ Массив. Удалить из исходного массива уникальные (не повторяющиеся) элементы
C++ Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы
Найти одинаковые элементы массива и вывести на экран индексы этих элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peoples
1109 / 613 / 412
Регистрация: 06.02.2016
Сообщений: 1,609
Записей в блоге: 11
Завершенные тесты: 4
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
365 / 259 / 124
Регистрация: 09.05.2014
Сообщений: 767
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
233 / 210 / 47
Регистрация: 02.08.2016
Сообщений: 863
Завершенные тесты: 4
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
7101 / 5278 / 267
Регистрация: 10.12.2010
Сообщений: 23,277
Записей в блоге: 17
22.08.2016, 16:36     Найти и вывести уникальные элементы массива #5
DevAlone, http://en.cppreference.com/w/cpp/algorithm/unique там же чуть ниже пример кода.
DevAlone
233 / 210 / 47
Регистрация: 02.08.2016
Сообщений: 863
Завершенные тесты: 4
22.08.2016, 16:46     Найти и вывести уникальные элементы массива #6
Я думал про сортировку, но быстро ли она будет выполняться?
Babysitter
80 / 107 / 35
Регистрация: 23.11.2015
Сообщений: 331
Завершенные тесты: 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++ Вывести элементы массива в виде таблицы и переставить его элементы местами
Внести в массив только уникальные элементы C++
Заменить уникальные элементы матрицы нулями C++

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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru