Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 53
1

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

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

Author24 — интернет-сервис помощи студентам
Задача состоит в том, что надо проверить входит ли один вектор в состав другого, нужно вывести 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;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2013, 14:08
Ответы с готовыми решениями:

Как определить, входит ли один список в состав другого?
4) Даны два списка, причем второй короче первого. Определите, входит ли второй список в состав...

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

Сформулировать один вектор из другого
Сформулировать вектор С из элементов вектора А, Удовлетворяющих условию Aij&gt;2 Дорогие друзья...

Какое событие происходит когда в форме один объект входит в область другого объекта?
Добрый день форумчане. пытаюсь создать мини-игрульку в С#. В общем PictureBox движется по форме с...

4
249 / 219 / 63
Регистрация: 30.07.2013
Сообщений: 465
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;
}
1
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 53
04.08.2013, 16:11  [ТС] 3
Fyret, спасибо за ответ. Так и задумано, чтобы iterLargeBegin увеличивался, а iterSmallBegin увеличивается, если выполняется конкретное условие. Про sort я узнал позднее в книге, но здесь нужно самому сделать.

Добавлено через 40 минут
там сортировки не должно быть, забыл написать.
0
415 / 411 / 95
Регистрация: 06.10.2011
Сообщений: 832
04.08.2013, 16:15 4
http://www.cplusplus.com/refer... ?kw=search
1
0 / 0 / 1
Регистрация: 19.04.2013
Сообщений: 53
04.08.2013, 18:00  [ТС] 5
Olivеr, великолепно, большое спасибо!
0
04.08.2013, 18:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2013, 18:00
Помогаю со студенческими работами здесь

Как повернуть один вектор относительно другого, используя матрицы поворота
Здравствуйте! У меня есть 2 отрезка в пространстве: AB=(-0.669131; 0; 0.743145) и BC=(10; -6; 0)....

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

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

Проверить, является ли один список подмножеством другого списка
не справляюсь с этим чудо-языком.. буду благодарен помощи в решении задач: Даны два списка L1...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru