Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 3
1

Сортировка двух векторов, создание третьего и запись в файл

06.06.2017, 14:33. Просмотров 446. Ответов 5
Метки нет (Все метки)

Необходимо отсортировать два вектора int таким образом чтобы сохранить результат в третий вектор, выбрав только те числа которые встречались в первом векторе, но не встречались во втором, а затем сохранить третий вектор в файл.

Предлагаемое решение (не работает, к сожалению)
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
ofstream in3(fileResult);
    if (!in3)
        return 0;
 
    std::sort(A.begin(), A.end());
    std::sort(B.begin(), B.end());
 
    std::vector <int> final;
    for (auto i1 = A.begin(), i2 = B.begin(); i1 != A.end() || i2 != B.end(); )
    {
        if (*i1 == *i2)                  
        {
            *i1++;                  // пропускаем i
            continue;
        }
        
        
        else                        
        {
            final.push_back(*i1); 
            i1++;                   
        }
    }
    
 
    int n = final.size();
    for (int i = 0;i< n;i++)
    
        in3  << final[i];
 
    
    for (auto i : final)
        std::cout << " " << i;
 
    system("pause");
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 14:33
Ответы с готовыми решениями:

Модули. Получение из двух векторов третьего
Помогите, пожалуйста. Задание:С помощью подпрограммы с параметром процедурного типа получить из...

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

Создание третьего файла на основе двух имеющихся
Всем привет. Итак, задача следующая: Надо взять из файла system_statfile.txt строки содержащие...

Сортировка двух векторов одновременно
Всем доброго времени суток! Дано: набор отрезков, начала которых хранятся в векторе а, концы...

5
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
06.06.2017, 19:24 2
C++
1
2
3
std::vector<int> final(A.size());
std::vector<int>::iterator it = std::set_difference(A.begin(), A.end(), B.begin(), B.end(), final.begin());
final.resize(it - final.begin());
1
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 3
07.06.2017, 13:59  [ТС] 3
Не получается применить set_difference, компилятор ругается на недостаточное кол-во параметров, хотя вроде нужные пять указаны...
Но хотелось бы все же решить в виде функции с применением именно циклов
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
int SaveVect(vector <int> & A, vector <int> & B, char * fileResult)
 
{
    ofstream in3(fileResult);
    if (!in3)
        return 0;
 
    std::sort(A.begin(), A.end());
    std::sort(B.begin(), B.end());
 
    std::vector <int> final;
    
    std::vector<int> final(A.size());
    std::vector<int>::iterator it = std::set_difference(A.begin(), A.end(), B.begin(), B.end(), final.begin());
    final.resize(it - final.begin());
 
    int n = final.size();
    for (int i = 0;i< n;i++)
    
        in3  << final[i];
 
    
    for (auto i : final)
        std::cout << " " << i;
 
    system("pause");
 
 
    return 1;
 
}
0
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
07.06.2017, 14:55 4
11-ю строку убери.
1
278 / 250 / 209
Регистрация: 14.11.2016
Сообщений: 946
07.06.2017, 14:57 5
ready-auto,
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*  C++11 & older */
#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
#include <string>
#define     SIZE                10
#define     default_file_name   "output.txt"
namespace Vector {
    template<typename T> void Input(const std::string, std::vector<T>&, const size_t);
    template<typename T> std::vector<T> DifferentNumbers(std::vector<T>, std::vector<T>);
    template<typename T> void OutputInFile(const std::string, const std::vector<T>&);
}
int main(void)
{
    std::vector<int> v1, v2;
    Vector::Input("V1", v1, size_t(SIZE));
    Vector::Input("V2", v2, size_t(SIZE));
    std::vector<int> v3(Vector::DifferentNumbers(v1, v2));
    Vector::OutputInFile(default_file_name, v3);
    std::cin.get();
    return 0;
}
 
namespace Vector {
    template<typename T> void Input(const std::string what, std::vector<T> &v, const size_t size)
    {
        for (size_t i(0); i < size; i++) {
            T x;
            std::cout << "[" << i + 1 << "]" << " Enter the " << what << ": ";
            std::cin >> x;
            v.push_back(x);
        }
    }
 
    template<typename T> std::vector<T> DifferentNumbers(std::vector<T> v1, std::vector<T> v2)
    {
        std::vector<T> v3;
        std::sort(v1.begin(), v1.end());
        std::sort(v2.begin(), v2.end());
        for (auto i : v1) {
            bool flag = true;
            for (auto j : v2)
                if (i == j)
                    flag = false;
            if (flag)
                v3.push_back(i);
        }
        return v3;
    }
 
    template<typename T> void OutputInFile(const std::string fname, const std::vector<T> &v)
    {
        std::ofstream file(fname, std::ios_base::out | std::ios_base::trunc);
        for (auto i : v)
            file << i << " ";
        file.close();
    }
}
1
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 3
07.06.2017, 15:12  [ТС] 6
Заработало, благодарю!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.06.2017, 15:12

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создание минимально возможного третьего динамического массива из двух
Подскажите в чем ошибка. Есть код #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std;...

Сортировка двух векторов (имена и возраст)
Имеется вектор строк, которые обозначают имена, и вектор чисел, означающий их возрасты. Нужно...

Сортировка,создание векторов
Здравствуйте, дали мне задачу и не могу разобраться . Вводиться N количество векторов , векторы...

Запись двух векторов, как функции и её аргумента
пытаюсь записать два массива (вектора) чисел в виде функции и её аргумента (аргумент -...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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