Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6236 / 2946 / 1047
Регистрация: 01.06.2021
Сообщений: 10,972

Найти наименьшее среди чисел первого массива которые не входят во второй массив

28.10.2021, 02:40. Показов 1083. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Отвечаю на тему Найти наименьшее среди чисел первого массива которые не входят во второй массив
Спасибо, что закрыли тему, пока отвечал на вопрос.
Пришлось создать эту тему, чтобы выложить ответ.

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
33
34
35
36
37
38
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int func(vector<int> a, vector<int> b) // passing our vectors by value; no need for passing by reference
{
    sort(a.begin(), a.end());
    a.erase(unique(a.begin(), a.end()), a.end());
    sort(b.begin(), b.end());
    b.erase(unique(b.begin(), b.end()), b.end());
    vector<int> c;
    set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    int m = *min_element(c.begin(), c.end());
    return m;
}
 
int main()
{
    cout << "N = ";
    int n; cin >> n;
    vector<int> A(n), B(n);
    cout << "Array 1\n";
    int in;
    for (int i = 0; i < n; ++i)
    {
        cin >> in;
        A.push_back(in);
    }
    cout << "Array 2\n";
    for (int i = 0; i < n; ++i)
    {
        cin >> in;
        B.push_back(in);
    }
    int m = func(A, B);
    cout << "Min = " << m;
}
Если у кого-то есть иное решение - публикуйте в этой теме.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2021, 02:40
Ответы с готовыми решениями:

Найти наименьшее среди элементов первого массива, которые не входят во второй массив
Помогите с задачей. Дано два массива, найти наименьшее среди элементов первого массива, которые не входят во второй массив Проблема в...

Даны два массива. Найти наименьшее число из первого массива среди чисел, которые не входят в первый массив
Даны два массива. Найти наименьшее число из первого массива среди чисел, которые не входят в первый массив. Как это сделать? Не силён в...

Найти наименьшие среди элементов первого массива, которые не входят во второй массив
Задано два массива. Найти наименьшие среди элементов первого мас-сива, которые не входят во второй массив. Но только без...

8
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,260
28.10.2021, 03:34
Цитата Сообщение от Royal_X Посмотреть сообщение
Если у кого-то есть иное решение - публикуйте в этой теме.
C++
1
2
3
4
5
6
7
    vector<int> A(n), B(n);
    ...
    for (int i = 0; i < n; ++i)
    {
        cin >> in;
        A.push_back(in);
    }
Ввод сделано некорректно. Весьма распространенная ошибка. Посмотрите сами, что у вас получается в вашем массиве после такого "ввода".

---

"Иное решение" заключается в том, что вот это

C++
1
2
3
    vector<int> c;
    set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    int m = *min_element(c.begin(), c.end());
- бессмысленная трата времени. Так как найти нужно всего лишь один не входящий элемент, вычислять всю разность множеств нет никакого смысла.

---

И что будет с вашим вариантом, если set_difference даст пустой результат?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6236 / 2946 / 1047
Регистрация: 01.06.2021
Сообщений: 10,972
28.10.2021, 03:49  [ТС]
TheCalligrapher, а что должно получиться после такого ввода? О какой ошибке вы говорите? И почему на форуме принято говорить какими-то загадками? У меня такой ввод работает корректно.
0
28.10.2021, 04:23

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
И почему на форуме принято говорить какими-то загадками?
да есть такой момент у некоторых, да и у меня бывает, люди так свою значимость подчеркивают :), это от настроения зависит, когда начинаешь чувствовать себя ущербным, заходишь на форум и таким поведением даешь понять себе и остальным что есть кто ущербней тебя :)

0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,260
28.10.2021, 04:58
Цитата Сообщение от Royal_X Посмотреть сообщение
а что должно получиться после такого ввода? О какой ошибке вы говорите?
Я же сказал вам: распечатайте содержимое ваших векторов после такого ввода. Неужели это так трудно?

Или хотя бы распечатайте их размеры. Чему, как вы думаете, равны их размеры сразу после завершения ввода?

Цитата Сообщение от Royal_X Посмотреть сообщение
И почему на форуме принято говорить какими-то загадками?
Во-первых, ошибка детская и часто встречающаяся. Я не люблю дылдонить снова и снова одну и ту же элементарщину. Это не интересно. (1, 2, 3...)

Во-вторых, вы, как мне кажется, претендуете на какою-то степень компетентности в тематике форума, раз уж вы беретесь решать задачи. Поэтому я не вижу необходимости водить вас за ручку, как сопливого студента-первокурсника. Я думаю, вам будет интереснее найти свою ошибку самостоятельно. А я лишь указал вам, где искать. (Я сужу по себе - мне было бы интереснее найти свою ошибку самостоятельно.)

Цитата Сообщение от Royal_X Посмотреть сообщение
У меня такой ввод работает корректно.
Не "ввод работает корректно", а программа в конечном итоге работает корректно. Программа работает корректно потому, что у вас получилось пресловутое "чётное количество ошибок": ошибка в вводе первого вектора компенсируется той же самой ошибкой во вводе второго.
0
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,822
28.10.2021, 05:06
Если не хочешь на печать выводить содержимое после ввода, то прочитай тогда про push_back внимательнее.

Не по теме:

Думаю, загадками говорят не потому, что хотят обидеть или задеть, а затем, чтобы человек подумал сам. Не загадка, а подсказка. :)

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6236 / 2946 / 1047
Регистрация: 01.06.2021
Сообщений: 10,972
28.10.2021, 10:48  [ТС]
TheCalligrapher, не печатал содержимое векторов, но полагаю, что при написании vector<int> A(n) мой вектор заполнился нулями. А когда я делаю push_back, то новые элементы добавляются после нулей. Но т.к. в дальнейшем я удаляю элементы первого вектора, которые есть во втором векторе, то моя ошибка незаметна до тех пор, пока пользователь не введет 0 в первый массив. И даже если он не введет 0 во второй массив, 0 из первого все равно удалиться и не учтется.
Тогда можно ли инициализировать просто как vector<int> A? Будет ли норм в таком случае? Либо если я инициализирую vector<int> A(n), то можно ли вместо A.push_back(in) написать A[i] = in или сразу cin >> A[i]?

Прим:. ни на что я не претендую на форуме и не являюсь ни программистом ни студентом. Пишу код как хобби.

Добавлено через 11 минут
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 <vector>
#include <algorithm>
using namespace std;
 
int func(vector<int> a, vector<int> b) // passing our vectors by value; no need for passing by reference
{
    sort(a.begin(), a.end());
    a.erase(unique(a.begin(), a.end()), a.end());
    sort(b.begin(), b.end());
    b.erase(unique(b.begin(), b.end()), b.end());
    vector<int> c;
    set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.begin()));
    int m = *min_element(c.begin(), c.end());
    return m;
}
 
int main()
{
    cout << "N = ";
    int n; cin >> n;
    vector<int> A(n), B(n);
    cout << "Array 1\n";
    for (int &i : A) cin >> i;
    cout << "Array 2\n";
    for (int &i : B) cin >> i;
    int m = func(A, B);
    cout << "Min = " << m;
}
Добавлено через 11 секунд
так пойдет?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,260
28.10.2021, 10:49
Цитата Сообщение от Royal_X Посмотреть сообщение
Тогда можно ли инициализировать просто как vector<int> A? Будет ли норм в таком случае? Либо если я инициализирую vector<int> A(n), то можно ли вместо A.push_back(in) написать A[i] = in или сразу cin >> A[i]?
Совершенно верно. Либо vector<int> A и push_back. Либо vector<int> A(n) и cin >> A[i].

Цитата Сообщение от Royal_X Посмотреть сообщение
так пойдет?
В условии задачи к сожалению не сказано, что делать, если искомого элемента не существует...
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13183 / 6819 / 1821
Регистрация: 18.10.2014
Сообщений: 17,260
29.10.2021, 23:49
Ну и возвращаясь к моему исходному замечанию по поводу выполнения ненужной работы:

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
std::optional<int> func(std::vector<int> a, std::vector<int> b)
{
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
    
  auto it_a = a.begin(), it_b = b.begin();
  while (it_a != a.end())
  {
    for (; it_b != b.end() && *it_b < *it_a; ++it_b);
    
    if (it_b == b.end() || *it_b != *it_a)
      break;
      
    for (++it_a; it_a != a.end() && *it_a == *(it_a - 1); ++it_a);
  }
  
  if (it_a != a.end())
    return *it_a;
    
  return {};
}
 
...
 
    auto m = func(A, B);
    if (m)
      std::cout << "Min = " << *m << std::endl;
    else
      std::cout << "Netu" << std::endl;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.10.2021, 23:49
Помогаю со студенческими работами здесь

Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив.
Задано два массива. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. Ни как не могу придумать:cry:, ...

Найти наименьшее среди чисел первого массива которые не входят во второй массив
Посмотрите фото с заданием Запрещено выкладывать условие задачи в виде картинки. Тема закрыта.

Найти наименьшее среди тех чисел первого массива, которые не входят во второй массив
Не могу решить задачу, помогите! Даны две последовательности по n чисел в каждой. Найти наименьшее среди тех чисел первой...

Найти наименьшее число из первого массива среди чисел, которые не входят во второй массив.
Нужно Выполнить задание: Даны 2 массива. Найти наименьшее число из первого массива среди чисел, которые не входят во второй массив.

Найти наименьшее число среди тех чисел первого массива, которые не входят во второй массив
Задание следующее: Дано 2 массива по 10 чисел в каждом. Найти наименьшее число среди тех чисел первого массива, которые не входят во...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru