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

Сравнение двух списков, на основе vector <string> - C++

Восстановить пароль Регистрация
 
KirillNSK
0 / 0 / 0
Регистрация: 29.07.2016
Сообщений: 36
21.11.2016, 13:38     Сравнение двух списков, на основе vector <string> #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
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# include <iostream>
# include <string>
# include <fstream>
# include <vector>
# include <iterator>
# include <algorithm>
 
using namespace std;
 
class Load 
{
protected:
    vector <string> Old;
    vector <string> New;
    vector <string> Write;
    string OldPack;
    string  NewPack;
            
public:
    
    void LoadPack ()
    {
        
        ifstream Old ("Pack.txt");
 
        if (Old)
        {
            while (getline (Old, OldPack))
            this -> Old.push_back (OldPack);
                        
            Old.close ();
        }
        else
            cout << "Ошибка!\n";
 
        ifstream New ("Pack2.txt");
 
        if (New)
        {
            while (getline (New, NewPack))
            this -> New.push_back (NewPack);
            
            New.close ();
        }
        else
            cout << "Ошибка!\n";
    }
    
};
 
class DubScan : public Load
{
public: 
    string Name;
public:
    
    void Scan ()
    {
        for (unsigned int i = 0; i < OldPack.size(); i ++)
            for (unsigned int c = 0; c < NewPack.size(); c ++)
                if (OldPack [i] == NewPack [c])
                {
                    NewPack.erase (remove (NewPack.begin (), NewPack.end (), NewPack [c]), NewPack.end ()); 
                }
                else
                {
                    FileEntry ();
                }
    }
 
    void FileEntry ()
    {
        ofstream Entry (Name);
 
        if (Entry)
        {
            for (unsigned int i = 0; i < Write.size (); i ++)
                cout << Write.at (i) << '\n';
        }
        else
        {
            cout << "Ошибка!" << '\n';
        }
        Entry.close ();
    }
 
    DubScan (string h)
    {
        Name = h;
    }
    
};
 
int main ()
{
    setlocale (LC_ALL, "RUSSIAN");
 
    string h;
 
    cout << "Сверим 2 файла на наличие дублей" << endl;
    cout << "Одинаковые сотрем" << endl;
    cout << "Введем наименование файла записи:" << endl;
 
    cin >> h;
 
    DubScan Entr (h);
 
    Entr.FileEntry ();
    
    system ("pause");
    return 0;
}
Здравствуйте, помогите пожалуйста, все компилируется, но не работает.
Программа должна сравнить два списка, если во втором списке есть повторы, она их удаляет, из оставшиеся элементы списка сохраняет в третьем файле txt.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 13:38     Сравнение двух списков, на основе vector <string>
Посмотрите здесь:

C++ Сравнение двух списков
C++ Сравнение элементов двух однонаправленных линейных списков
сравнение двух string C++
C++ Сравнение двух строк string
C++ Сравнение двух string
Сравнение двух строк (экземпляры класса string ) задействуя метод compare C++
C++ Сравнение двух std::string на совпадение без учёта регистра
Сравнение двух векторов <string>, удаление повторяющихся элементов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,704
21.11.2016, 14:16     Сравнение двух списков, на основе vector <string> #2
Как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    void Scan ()
    {
        for (unsigned int i = 0; i < OldPack.size(); i ++)
            for (unsigned int c = 0; c < NewPack.size(); c ++)
                if (OldPack [i] == NewPack [c])
                {
                    NewPack.erase (remove (NewPack.begin (), NewPack.end (), NewPack [c]), NewPack.end ()); 
                }
 
        FileEntry ();
    }
 
    DubScan (string h)
    {
        Name = h;
        LoadPack();
    }
В main() вызывай Scan(), а не FileEntry().
Yandex
Объявления
21.11.2016, 14:16     Сравнение двух списков, на основе vector <string>
Ответ Создать тему
Опции темы

Текущее время: 12:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru