Вопрос задан 28.03.2021 в 05:33. Предмет Информатика. Спрашивает Шилович Татьяна.

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

преобразовать массив таким образом,чтобы а нам остались значения,повторяющиеся дважды ПОМОГИТЕ ПОЖАЛУЙСТА ДАЮ 185 БАЛЛОВ
0 0
Перейти к ответам

Ответы на вопрос

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

#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <unordered_map>
using namespace std;
unordered_map<int, size_t> umap;

void KeepDuplicates(vector<int>& v)
{
    vector<int> tmp(v);
    for (size_t i = 0; i < tmp.size(); ++i)
    {
        unordered_map<int, size_t>::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<int> 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<int>(cout, " "));
}
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь. Вот пример кода на языке C++, который преобразует целочисленный массив таким образом, чтобы в нем остались только значения, повторяющиеся дважды:

cpp
#include <iostream> #include <unordered_map> #include <vector> using namespace std; vector<int> removeNonDuplicates(vector<int> nums) { unordered_map<int, int> numMap; for (int num : nums) { numMap[num]++; } vector<int> result; for (auto& it : numMap) { if (it.second == 2) { result.push_back(it.first); } } return result; } int main() { int nums[] = {1, 2, 2, 3, 3, 4, 5, 5}; int size = sizeof(nums) / sizeof(nums[0]); vector<int> numVec(nums, nums + size); vector<int> result = removeNonDuplicates(numVec); for (int num : result) { cout << num << " "; } return 0; }

В этом примере мы используем unordered_map, чтобы посчитать количество повторений каждого элемента в массиве. Затем мы проходим по элементам unordered_map и добавляем только те, которые повторяются ровно дважды, в новый вектор result.

Для проверки примера мы создаем массив nums, содержащий несколько повторяющихся элементов, и вызываем функцию removeNonDuplicates с этим массивом в качестве аргумента. Затем мы выводим элементы, которые остались после преобразования, на экран.

Если у вас есть какие-либо вопросы или неясности, пожалуйста, не стесняйтесь задавать их мне.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос