Как вывести слова встречающиеся в обоих файлах?

214
04 апреля 2018, 10:41

Имеются 2 файла, в каждом из них слова. Нужно вывести на экран консоли слова, которые встречаются в обоих файлах. Есть следующий код:

 #include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
/* 2 файла, в них слова. Вывести на экран все слова, которые есть в обоих файлах */
int main(int argc, char** argv) {
    SetConsoleCP(1251);
       SetConsoleOutputCP(1251);
     char mas1[256], mas2[256];
    int  count1=0, count2=0;
    ifstream f1 ("in1.txt");
    ifstream f2 ("in2.txt");
    while (!f1.eof())
    {
        f1 >> mas1;
        count1++;
    }
    while (!f2.eof())
    {
        f2 >> mas2;
        count2++;
    }
    for (int i=0; i<count1; i++)        
        for (int j=0; j<count2; j++)            
            if (mas1[i]==mas2[j])
            cout << mas2[j];
    f2.close ();
    f1.close ();
    return 0;
}

Как нетрудно догадаться, он не работает. Я думаю, всё дело в том, что согласно коду выше каждый элемент каждого массива сравнивается только с элементом с ТАКИМ ЖЕ индексом из другого массива. Ну то есть первый с первым, второй со вторым и т.д. Я не могу понять, как написать программу, которая берёт, например, в первом массиве каждый отдельный элемент и сравнивает его со ВСЕМИ элементами второго массива. Убедительная просьба, если будете редактировать мой код, постарайтесь использовать те библиотеки и функции, что есть у меня! Ну ещё string можно, я его пойму...с остальными библиотеками я пока, к сожалению, не знакома:(

Answer 1
map<string, int> m;
string s;   
while(f1 >> s)
    ++m[s];
// теперь имеем таблицу слов и количество этих слов в файле
// добавляем в таблицу из другого файла
while (f2 >> s) {
    ++m[s]; // если нет такого слова, то m[s] == 1
    if(m[s] > 1) cout << s <<endl;
    m[s] = 0;
}

вот и вся логика

READ ALSO
Взятие структуры из класса

Взятие структуры из класса

в сlass Points имеется структура

206
GTest и TearDown

GTest и TearDown

Когда происходит FAIL() тогда TearDown не освобождает ресурсы, можно ли как то сделать чтоб когда - происходит FAIL() происходил вызов деструктора...

236
Стили для QAction Qt5 C++

Стили для QAction Qt5 C++

Всем привет!

204