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

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

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

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

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

3. В массиве найти элементы, которые в нем встречаются только один раз, и вывести их на экран. То есть найти и вывести уникальные элементы массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2016, 14:11     Найти и вывести уникальные элементы массива
Посмотрите здесь:

C++ Вывести на экран "уникальные" элементы массива
Заданы два массива А(5) и В(5). В каждом из массивов найти наименьшее значение и разделить на него все элементы массивов. На печать вывести исходные C++
C++ Найти уникальные элементы в массиве
C++ Вывести элементы массива в виде таблицы и переставить его элементы местами
C++ Массив. Удалить из исходного массива уникальные (не повторяющиеся) элементы
Внести в массив только уникальные элементы C++
Заменить уникальные элементы матрицы нулями C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peoples
976 / 492 / 376
Регистрация: 06.02.2016
Сообщений: 1,284
Записей в блоге: 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
359 / 253 / 122
Регистрация: 09.05.2014
Сообщений: 761
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
137 / 132 / 36
Регистрация: 02.08.2016
Сообщений: 512
Завершенные тесты: 3
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
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,889
Записей в блоге: 17
22.08.2016, 16:36     Найти и вывести уникальные элементы массива #5
DevAlone, http://en.cppreference.com/w/cpp/algorithm/unique там же чуть ниже пример кода.
DevAlone
137 / 132 / 36
Регистрация: 02.08.2016
Сообщений: 512
Завершенные тесты: 3
22.08.2016, 16:46     Найти и вывести уникальные элементы массива #6
Я думал про сортировку, но быстро ли она будет выполняться?
Babysitter
 Аватар для Babysitter
78 / 103 / 34
Регистрация: 23.11.2015
Сообщений: 318
Завершенные тесты: 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
 Аватар для Avazart
7037 / 5214 / 259
Регистрация: 10.12.2010
Сообщений: 22,889
Записей в блоге: 17
22.08.2016, 17:10     Найти и вывести уникальные элементы массива #8
Цитата Сообщение от DevAlone Посмотреть сообщение
Я думал про сортировку, но быстро ли она будет выполняться?
А поиск по не отсортированному массиву перебором быстро выполняется?

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

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