Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18

Пересечение множеств. Выписать элементы, содержащиеся в обоих множествах

13.10.2024, 19:59. Показов 962. Ответов 5

Студворк — интернет-сервис помощи студентам
Решаю задачу №82 с сайта acmp.ru (пересечение множеств). Нужно писать код именно на С++, так как мы сейчас изучаем именно этот язык и нужно его практиковать в решении разных задач с сайта.


Условие задачи
Даны два неупорядоченных набора целых чисел (может быть, с повторениями). Выдать без повторений в порядке возрастания все те числа, которые встречаются в обоих наборах.

Входные данные
В первой строке входного файла INPUT.TXT записано через пробел два целых числа N и М (1 ≤ N, М ≤ 300 000) — количество элементов первого и второго наборов, соответственно. Во второй строке записано N чисел первого набора через пробел. В третьей строке записано M чисел второго набора через пробел. Каждое из этих чисел попадает в промежуток от 0 до 105.

Выходные данные
В выходной файл OUTPUT.TXT нужно записать в возрастающем порядке без повторений все числа, которые входят как в первый, так и во второй набор. Числа разделять одним пробелом. Если таких чисел нет, то выходной файл должен оставаться пустым.

Пример входных данных:
11 6
2 4 6 8 10 12 10 8 6 4 2
3 6 9 12 15 18
И соответствующие им выходные данные:
6 12

Написала вот такой код:
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 <vector>
using namespace std;
int main()
{
   int i, j, n, m, p, *a, *b;
   cin>>n>>m;
   a=new int[n];
   b=new int[m];
   if (m<n) p=m;
   else p=n;
   vector<int> c(p,0);
   for (i=0; i<n; i++) cin>>a[i];
   for (i=0; i<m; i++) cin>>b[i];
   int k=0;
   for (i=0; i<n; i++)
    for (j=0; j<m; j++)
        if (a[i]==b[j]) {
            c[k]=a[i]; k++;
            b[j]=-1; break;
        }
   delete a; delete b;
   vector<int> l(100000,0);
   int x;
   for (i=0; i<k; i++){
    x=c[i];
    l[x]++;
   }
   for (i=0; i<100001; i++)
    for (j=0; j<l[i]; j++) cout<<i<<" ";
   return 0;
}
Сайт отказывается принимать, буквально сразу на 2 тесте выдаёт wrong answer, помогите, пожалуйста, понять, в чём ошибка
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2024, 19:59
Ответы с готовыми решениями:

Дано N множеств. Определить элементы, которые существуют во всех множествах
Дано N множеств. Определить элементы, которые существуют во всех множествах. Помогите пожалуйста

Определить какие числа встречаются в обоих множествах
uses crt; type m1 = set of 0..30 ; m2 = set of 0..15 ; var i,x1,x2:integer; mn1:m1; mn2:m2; begin randomize;mn1:=;mn2:=; for...

Найти пересечение двух множеств и вывести данное пересечение и кол-во элементов в нем
Здравствуйте, помогите, пожалуйста, дорешать задачу. Условие: найти пересечение двух множеств и вывести данное пересечение и кол-во...

5
Заблокирован
13.10.2024, 20:03
Цитата Сообщение от klilia Посмотреть сообщение
Сайт отказывается принимать
Вы сначала с предыдущим заданием разберитесь.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
13.10.2024, 20:38
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
#include <iostream>
#include <set>
using namespace std;
int main()
{
    int n, m;
    cin>>n>>m;
    int* a=new int[n];
    int* b=new int[m];
    set<int> ca,cb;
    for (int i=0; i<n; i++) 
    {
        cin>>a[i];
        ca.insert(a[i]);
    }
    for (int i=0; i<m; i++)
    {
        cin>>b[i];
        cb.insert(b[i]);
    }
    delete[] a;
    delete[] b;
    for (set<int>::iterator i=ca.begin(); i!=ca.end(); ++i)
    {
        if (cb.find(*i) != cb.end())
            cout<<*i<<' ';
    }
    return 0;
}
0
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 21:01  [ТС]
Спасибо вам большое за это решение! Но, к сожалению, тут много вещей, которые мы, увы, пока не проходили
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
13.10.2024, 21:05
set отличается от вектора тем, что в нем элементы содержатся только по одному разу и он уже отсортирован.
Остается только пройти по всем уже отсортированным значениям первого набора и проверить, есть ли они во втором наборе.

p.s. обратите внимание на довольно частую ошибку
Цитата Сообщение от klilia Посмотреть сообщение
delete a; delete b;
нужно
C++
1
delete[] a; delete[] b;
Т.е. если было new со скобками [], то и удалять надо через delete со скобками []
1
0 / 0 / 0
Регистрация: 21.09.2024
Сообщений: 18
13.10.2024, 21:28  [ТС]
Ого, спасибо за уточнение про скобки!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2024, 21:28
Помогаю со студенческими работами здесь

Написать программу симметрической разности двух множеств, используя объединение и пересечение множеств
Написать программу симметрической разности двух множеств, используя объединение и пересечение множеств

Множества. Операции над множествами: добавление элемента, удаление, пересечение множеств, объединение множеств
Привет, помогите найти ошибку. Есть код который реализует множества и операции над ними. Мы задаем элементы в множество, а потом выводим их...

Для заданного набора множеств определить, какая группа множеств представляет их пересечение и объединение
Даны множества: А – множество равносторонних треугольников и В – множество прямоугольных треугольников. Определить, какая группа множеств...

Айти: объединение множеств А, В и С, пересечение множеств А, В и С, разность А\В
Составить множество А из букв фамилии, множество В – из букв имени, множество С – из букв отчества (повторяющиеся элементы удалить)....

Дано 2 множества, содержащих названия компаний. Найти только те компании, которые содержатся в обоих множествах
Дано 2 множества, содержащих названия компаний. Найти только те компании, которые содержатся в обоих множествах.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru