Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Расчет количества слов в тексте

#cpp


Необходимо подсчитать количество вхождений каждого слова в тексте.


словом считается любая последовательность символов, каждый из которых не входит в
множество разделителей. Множество разделителей должно задаваться отдельно (строкой).
кодировка - символы однобайтовые
текст находится в файле, имя файла задается первым аргументом командной строки
пример:
test.exe war_and_peace.txt
выводить в stdout, формат <слово> - <сколько раз встретилось>, вывод должен быть
отсортирован по словам в лексикографическом порядке


Допустим есть строка и множество разделителей:

void main()
{
    string mySentense = "one. two three one, one two";
    string spacersЗlurality[] = { ",", "." };
}


Подскажите как хотя бы сделать 4 пункт?
    


Ответы

Ответ 1



Вот демонстрационная программа, которая показыывает один из возможных подходов к решению задания в соответствии с пунктом 4. #include #include #include #include int main() { std::string mySentense = "one. two three one, one two"; const char *delimiters = "., \t"; std::map frequencies; for ( std::string::size_type pos = 0; ( pos = mySentense.find_first_not_of( delimiters, pos ) ) != std::string::npos; ) { auto n = pos; pos = mySentense.find_first_of( delimiters, pos ); std::string word = mySentense.substr( n, pos == std::string::npos ? pos : pos - n ); for ( char &c : word ) c = std::toupper( ( unsigned char )c ); ++frequencies[word]; } for ( const auto &p : frequencies ) std::cout << p.first << ": " << p.second << std::endl; } Вывод программы на консоль: ONE: 3 THREE: 1 TWO: 2 Все, что вам еще нужно сделать, так это считывать файл строка за строкой, используя стандартную функцию std::getline

Комментариев нет:

Отправить комментарий