Курсовая работа ** тему:ОСНОВЫ ПРОГРАММИРОВАНИЯ ** ЯЗЫКЕ С/С++: Дан целочисленный массив....

0 голосов
48 просмотров

Курсовая работа на тему:ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С/С++: Дан целочисленный массив. преобразовать массив таким образом,чтобы а нам остались значения,повторяющиеся дважды
ПОМОГИТЕ ПОЖАЛУЙСТА ДАЮ 185 БАЛЛОВ


Информатика (26 баллов) | 48 просмотров
0

Да хоть про 185 тысяч напишите... все равно больше 50 не выставите.

0

Жиза)

Дан 1 ответ
0 голосов
Правильный ответ

Используя boost библиотеку можно было это сделать ещё проще (нужно заканчивать баловаться boost'ом, ато совсем мозги атрофируются :D). Если посидеть и подумать чуть дольше 5 минут, можно и это решение улучшить, но оставлю это Вам)

#include
#include
#include
#include
#include
using namespace std;
unordered_map umap;

void KeepDuplicates(vector& v)
{
    vector tmp(v);
    for (size_t i = 0; i < tmp.size(); ++i)
    {
        unordered_map::iterator pos = umap.find(tmp[i]);
        if (pos->second != 2)
        {   
            auto it = remove(v.begin(), v.end(), pos->first);
            v.resize(it - v.begin());
        }
    }
}

int main()
{
    vector arr = { 3, 2, 3, 6, 2, 7, 5, 6, 9, 2 };
    for (const auto& i : arr) ++umap[i];
    KeepDuplicates(arr);
    copy(arr.begin(), arr.end(), ostream_iterator(cout, " "));
}

(4.2k баллов)