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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 112, средняя оценка - 4.66
AZIZBEK
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 37
#1

Удалить одинаковые элементы массива - C++

19.07.2012, 10:16. Просмотров 15395. Ответов 5
Метки нет (Все метки)

Создать массив из 20 элементов, из массива удалить одинаковые элементы массива и вывести на экран
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2012, 10:16     Удалить одинаковые элементы массива
Посмотрите здесь:

C++ Атд список. Удалить одинаковые элементы.
C++ Одинаковые элементы массива
Одинаковые парные элементы двумерного массива по строкам C++
C++ Как удалить одинаковые элементы из списка?
C++ Удалить из массива все одинаковые элементы, оставив их первые вхождения
Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их первые вхождения. C++
Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы, оставив их последние вхождения C++
Найти одинаковые элементы массива и вывести на экран индексы этих элементов C++
Заданная матрица размером NxM. Удалить те строки, в которых встречаются одинаковые элементы C++
C++ Поменять одинаковые элементы массива на нули
C++ Удалить из массива все одинаковые элементы
Поменять местами элементы массива, разные по знаку, но одинаковые по модулю C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
19.07.2012, 10:56     Удалить одинаковые элементы массива #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
28
29
30
31
32
#include <iostream> 
#include <algorithm>
#include <ctime> 
#include <vector>
#include <cstdlib>
using namespace std; 
int main() 
{ 
    const int size = 20; // размер
    int array[size]; // массив
    srand((unsigned) time(0)); // для случайных чисел
    int i;  
 
    for ( i = 0; i < size; i++) 
        array[i] = rand() % 10; // заполняем случайными числами
 
    vector<int> vec (array, array+size);  // помещаем в вектор
    vector<int> :: iterator it; // итератор
 
    
    for ( i = 0; i < size; i++) 
        cout << array[i] << " ";  // исходный мвссив
    cout << endl;
    sort(vec.begin(), vec.end()); // сортирум вектор
    it = unique(vec.begin(), vec.end()); // удаляем повторяющиеся элементы
    vec.resize(it - vec.begin());
    
 
    for ( i = 0; i < vec.size(); i++) // выводим
        cout << vec[i] << " ";  
    cout << endl;
}
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
19.07.2012, 11:06     Удалить одинаковые элементы массива #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<ctime>
using namespace std;
int main(){
    int a[20];
    srand(time(0));
    for (int i=0; i<20; i++){
        a[i]=rand()%20;
        cout<<a[i]<<" ";
    }
    cout<<endl;
    for (int i=0; i<20; i++){
        bool flag=true;
        for (int j=0; j<20; j++)
            if (i-j!=0 && a[i]==a[j]) flag=false;
        if (flag) cout<<a[i]<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
19.07.2012, 11:24     Удалить одинаковые элементы массива #4
Мой код неверный там удаляются все повторы.

Добавлено через 11 минут
Предлагаю свой вариант он слегка отличен от варианта rinata_W с использованием счётчика


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
28
29
30
31
32
#include <iostream> 
#include <ctime> 
#include <cstdlib>
using namespace std; 
int main() 
{   
    const int size = 20;
    int array[size]; 
    int i, j;  
    srand((unsigned) time(0));
    int count = 0;
 
    for ( i = 0; i < size; i++) 
        array[i] = rand() % 20; 
 
    for ( i = 0; i < size; i++) 
        cout << array[i] << " "; 
    cout << endl;  
 
    for ( i = 0; i < size; i++) 
    { 
        int temp = array[i]; 
 
        for ( j = 0; j < size; j++) 
            if(temp == array[j]) 
                count++; 
        if(count == 1) 
            cout << temp << " "; 
        count = 0; 
    }  
    cout << endl;
}
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.07.2012, 11:29     Удалить одинаковые элементы массива #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <vector>
#include <unordered_set>
 
int main()
{
    std::vector<int> v({1, 2, 3, 4, 5, 2, 4});
    std::unordered_set<int> us(v.begin(), v.end());
    for(const auto& elem: us)
        std::cout << elem << ' ';
    std::cout << std::endl;
    return 0;
}
IceStrength
0 / 0 / 0
Регистрация: 25.10.2014
Сообщений: 56
27.11.2014, 18:40     Удалить одинаковые элементы массива #6
....
Yandex
Объявления
27.11.2014, 18:40     Удалить одинаковые элементы массива
Ответ Создать тему
Опции темы

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