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

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

Войти
Регистрация
Восстановить пароль
 
Bulat123
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 53
#1

Проверить, входит ли один вектор в состав другого - C++

04.08.2013, 14:08. Просмотров 489. Ответов 4
Метки нет (Все метки)

Задача состоит в том, что надо проверить входит ли один вектор в состав другого, нужно вывести 1 или 0 (true или false). Проблема такова, что при отрицательном ответе выдает ошибку во время выполнения vector iterator not incrementable или vector iterator not dereferencable(до небольшого изменения в 1 строке, где производился явный инкремент итератора).

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
 vector<int> vec1, vec2;
    int num, nums;
    bool eq = false;
    cout << "When you stop fillng a vector, please, enter some letter." << endl;
    cout << "How much numbers are in the first vector? ";
    cin >> nums;
    cout << "Filling the first vector:" << endl;
    for (int cnt = 0; cnt != nums; ++cnt) {
        cin >> num; 
        vec1.push_back(num);
    }
    cout << "How much numbers are in the second vector? ";
    cin >> nums;
    cout << "Filling the second vector:" << endl; 
    for (int cnt = 0; cnt != nums; ++cnt) {
        cin >> num; 
        vec2.push_back(num);
    }
    vector<int>::iterator iterSmallBegin = (vec1.size() > vec2.size()) ? vec2.begin() : vec1.begin(),
                          iterLargeBegin = (vec1.size() > vec2.size()) ? vec1.begin() : vec2.begin(),
                          iterSmallEnd = (vec1.size() > vec2.size()) ? vec2.end() : vec1.end(),
                          iterLargeEnd = (vec1.size() > vec2.size()) ? vec1.end() : vec2.end();
    for (; iterSmallBegin != iterSmallEnd; ++iterLargeBegin) {
        if (iterLargeBegin != iterLargeEnd) {
        eq = (*iterSmallBegin == *iterLargeBegin) ? true : false;    
        iterSmallBegin = (eq == true) ? ++iterSmallBegin : iterSmallBegin;
        }
    }
    cout << eq << endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2013, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, входит ли один вектор в состав другого (C++):

Проверить, является ли один массив подмножеством другого - C++
Здравствуйте! Опять нужна помощь. Задание: Написать функцию, принимающую в качестве аргумента, указатели на два массива (А и В) и...

Сколько функций входит в состав модуля Math? - C++
Кто знает сколько функций входит в состав модуля Math

Проверить можно ли выразить линейно один из векторов массива через заданный вектор - C++
Дан массив векторов, и вектор b можно ли выразить вектор(один из массива) линейно через b Вообщем создал наброски, генерация массива,...

Строки: Определить, сколько в тексте слов, в состав которых входит слог сок - C++
Доброго времени суток. Вот ниже собственно задания. Прошу оставлять комментарии к строкам, ибо страдает объяснение у меня( ...

Проверить лежит ли один из многоугольников строго внутри другого и определить площади многоугольников - C++
Два выпуклых многоугольника заданы на плоскости перечислением координат вершин в порядке обхода границы. Проверить лежит ли один из них...

Необходимо найти и записать в стек числа, в состав которых входит 1 символ "*" - C++
Необходимо написать алгоритм поиска в строке чисел. Условие: дан набор символов - строка произвольного размера. &quot;Слова&quot; в строке разделены...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
04.08.2013, 14:27 #2
Дык,
for (; iterSmallBegin != iterSmallEnd; ++iterLargeBegin)

Но программа все равно неправильная. В STL есть готовые алгоритмы:

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
#include <algorithm>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec1, vec2;
    int num, nums;
 
    cout << "When you stop fillng a vector, please, enter some letter." << endl;
    cout << "How much numbers are in the first vector? ";
    cin >> nums;
    cout << "Filling the first vector:" << endl;
    for (int cnt = 0; cnt != nums; ++cnt) {
        cin >> num; 
        vec1.push_back(num);
    }
 
    cout << "How much numbers are in the second vector? ";
    cin >> nums;
    cout << "Filling the second vector:" << endl; 
    for (int cnt = 0; cnt != nums; ++cnt)
    {
        cin >> num; 
        vec2.push_back(num);
    }
 
    std::sort( vec1.begin(), vec1.end() );
    std::sort( vec2.begin(), vec2.end() );
 
    cout << std::includes( vec1.begin(), vec1.end(), vec2.begin(), vec2.end() ) << endl;
 
    return 0;
}
Bulat123
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 53
04.08.2013, 16:11  [ТС] #3
Fyret, спасибо за ответ. Так и задумано, чтобы iterLargeBegin увеличивался, а iterSmallBegin увеличивается, если выполняется конкретное условие. Про sort я узнал позднее в книге, но здесь нужно самому сделать.

Добавлено через 40 минут
там сортировки не должно быть, забыл написать.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
04.08.2013, 16:15 #4
http://www.cplusplus.com/reference/a...rch/?kw=search
Bulat123
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 53
04.08.2013, 18:00  [ТС] #5
Olivеr, великолепно, большое спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 18:00
Привет! Вот еще темы с ответами:

Списки. Входит ли один список в другой - C++
Задание - Проверить, входит ли список l1 в список l2. Термином &quot;список&quot; обозначен линейный список. Исходные и результирующие списки...

Проверить входит ли заданный символ в текст - C++
Дан текст из нескольких строк. Проверить, входит символ &quot;а&quot; в текст. Как мне сделать поиск по тексту, подскажите пожалуйста. Мой код не...

Как проверить, входит ли текущее время в интервал от 10 минут до 50? - C++
Добрый день. Как проверить, входит ли текущее время в интервал от 10 минут до 50 ? Спасибо.

Проверить входит ли введенная цифра в заданное натуральное десятичное число - C++
Составить программу,печатающую да или нет в зависимости от того,входит ли введенная цифра в заданное натуральное десятичное число.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.08.2013, 18:00
Ответ Создать тему
Опции темы

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