none
Поиск самых длинных комбинированных (объединенных) слов в файле RRS feed

  • Общие обсуждения

  • Здравствуйте.
    У меня есть такая задача:
    1. Найти 2 самых длинных комбинированных слова 
    2. Найти все комбинированные слова в файле
    3. Подсчитать общее количество слов в файле
    То есть, я вписываю в программу файл, в котором содержатся слова по одному в строке без пробелов, допустим 1000 слов. Необходимо что бы программа читала все слова, находила обычные слова (например cat) и комбинированное слово (на пример catdog). Программа должна распознавать это комбинированное слово и записывала в массив для подсчета, и из всех комбинированных должна найти 2 самых длинных.
    У меня есть начальный код, программа просто ищет 2 самых длинных слова, но не комбинированные:

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <algorithm>
    #include <set>
     
    using namespace std;
    struct Lcompare : binary_function<string, string, bool>
    {
        bool operator()(const string& p, const string& q) const
        {
            return p.size() > q.size();
        }
    };
     
     
    int main()
    {
        setlocale(LC_ALL, "Russian");
        multiset<string, Lcompare > words;
        ifstream ifs("words.txt");
        if (!ifs)
        {
            cout << "Ошибка, файл не найден \nПожалуйста повторите попытку" << endl;
        }
        else
        {
            while (!ifs.eof())
            {
                string s;
                ifs >> s;
                words.insert(s);
            }
            // вывести на экран
            multiset<string, Lcompare >::iterator it = words.begin();
            for (int i = 1;  i <= 2 && it != words.end(); i++)
                cout << *it++ << endl;
        }
        system("pause");
        return 0;
    }

    30 октября 2016 г. 17:04

Все ответы