Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Вывести уникальные элементы массива - C++
напишите программу, печатающую уникальные элементы массива из 20 элементов.

Найти уникальные элементы массива - C++
пожалуйста объясните написанный код include<stdio.h> #include<stdlib.h> #include<math.h> #include<iostream> using namespace std;...

Вывести на экран "уникальные" элементы массива - C++
1 Есть массив, вывести на экран все элементы, которые встречаются хотя-бы дважды 2 Вывести на экран "уникальные" элементы. ЗЫ...

Найти уникальные элементы в массиве - C++
Ребята нужна помощь, у меня есть массив, к примеру: O O O O O l l O O P O O O А мне нужно найти и вывести O,l,P, то есть...

Массив. Удалить из исходного массива уникальные (не повторяющиеся) элементы - C++
Вводится длина одномерного массива и значения его элементов. Удалить из исходного массива уникальные (не повторяющиеся) элементы. Результат...

Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы - C++
В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат...

7
Peoples
1172 / 677 / 426
Регистрация: 06.02.2016
Сообщений: 1,782
Записей в блоге: 13
Завершенные тесты: 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;
}
0
lawr
367 / 261 / 124
Регистрация: 09.05.2014
Сообщений: 769
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]<<" ";
    }
0
DevAlone
320 / 272 / 55
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 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]<<" ";
    }
и как это должно работать?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,046
Записей в блоге: 17
22.08.2016, 16:36 #5
DevAlone, http://en.cppreference.com/w/cpp/algorithm/unique там же чуть ниже пример кода.
1
DevAlone
320 / 272 / 55
Регистрация: 02.08.2016
Сообщений: 1,008
Завершенные тесты: 4
22.08.2016, 16:46 #6
Я думал про сортировку, но быстро ли она будет выполняться?
0
Babysitter
109 / 115 / 36
Регистрация: 23.11.2015
Сообщений: 346
Завершенные тесты: 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 << " ";
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,046
Записей в блоге: 17
22.08.2016, 17:10 #8
Цитата Сообщение от DevAlone Посмотреть сообщение
Я думал про сортировку, но быстро ли она будет выполняться?
А поиск по не отсортированному массиву перебором быстро выполняется?

В конечном счете все будет зависеть от исходной последовательности, насколько она рандомная.
0
22.08.2016, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2016, 17:10
Привет! Вот еще темы с ответами:

Найти первый и последний нулевые элементы заданного массива и вывести их индексы - C++
В массиве несколько нулевых элементов. Найти первый и последний нулевые элементы. Вывести их индексы. Как это сделать?

Найти одинаковые элементы массива и вывести на экран индексы этих элементов - C++
Доброй ночи, Подскажите пожалуйста с последним заданием, у меня есть 2 массива, нужно там найти одинаковые элементы и вывести на экран...

Найти максимальный элемент, сумму чётных элементов массива и вывести отрицательные элементы на экран - C++
Дан одномерный массив, состоящий из N целочисленных элементов. 11.1. Ввести массив с клавиатуры. 11.2. Найти максимальный элемент. ...

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) - C++
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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