С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/34: Рейтинг темы: голосов - 34, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 33

Отсортировать текст по частоте встречаемости слов

12.03.2018, 13:17. Показов 6845. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая разбивает текст на слова и
подсчитывает сколько раз входит в заданный текст то или иное слово. Затем программа должна
отсортировать массив слов по частоте встречаемости и вывести на экран. Входными данными служит текст
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2018, 13:17
Ответы с готовыми решениями:

Отсортировать список слов по убыванию количества их встречаемости
Ввести текст и список слов. Для каждого слова из заданного списка найти, сколько раз оно встречается в тексте, и отсортировать список слов...

Найти второе по частоте встречаемости в последовательности значение
Два-модой последовательности чисел назовем второе по частоте встречаемости в ней значение. Для заданной последовательности целых чисел...

Сортировка символов в строке по частоте их встречаемости
Помогите разобраться с кодом. Ошибка возникает на этапе суммирования частоты встречаемости символов. #include <stdio.h> #include...

2
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
18.03.2018, 15:40
Лучший ответ Сообщение было отмечено erenije как решение

Решение

erenije, здравствуйте! Вот программа. Она работает с английским текстом, но вы можете подключить поддержку кириллицы.

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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string str, s;
    map<string, int> mp;
    vector<pair<string, int>> v;
    while (getline(fin, str))
    {
        for (int i = 0; i < str.size(); i++)
        {
            s += str[i];
            if (!(isalpha(str[i])))
            {
                s.pop_back();
                if (s != "")
                    mp[s]++;
                s = "";
            }
        }
    }
    copy(mp.begin(), mp.end(), back_inserter<vector<pair<string, int>>>(v));
    for (int i = 0; i < v.size(); i++)
    {
        for (int j = v.size() - 1; j > i; j--)
        {
            if (v[j-1].second > v[j].second)
            {
                swap(v[j-1], v[j]);
            }
        }
    }
    fout << "Processed words:\n\n";
    for (int i = 0; i < v.size(); i++)
    {
        fout << v[i].first << " " << v[i].second << "\n";
    }
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
0
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
19.03.2018, 19:27
erenije, немного изменил программу, используя встроенную функцию сортировки вектора и unordered_map вместо обычного. Так программа работает значительно быстрее (около 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
#include <bits/stdc++.h>
 
using namespace std;
 
bool f(const pair<string, int>& lhs, const pair<string, int>& rhs)
{
    return lhs.second < rhs.second;
}
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string str, s;
    unordered_map<string, int> mp;
    vector<pair<string, int>> v;
    while (getline(fin, str))
    {
        for (int i = 0; i < str.size(); i++)
        {
            s += str[i];
            if (!(isalpha(str[i])))
            {
                s.pop_back();
                if (s != "")
                    mp[s]++;
                s = "";
            }
        }
    }
    copy(mp.begin(), mp.end(), back_inserter<vector<pair<string, int>>>(v));
    sort(v.begin(), v.end(), f);
    fout << "Processed words:\n\n";
    for (int i = 0; i < v.size(); i++)
    {
        fout << v[i].first << " " << v[i].second << "\n";
    }
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
Вы, также, можете использовать самую первую программу (где для сортировки вектора я использовал метод Пузырька), если вам важно сохранить алфавит ключа, однако, в этом случае программа будет работать медленнее (4 - 5 секунд). Встроенная сортировка и unordered_map работают быстрее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2018, 19:27
Помогаю со студенческими работами здесь

Отсортировать текст по числу слов в строке
скажите алгоритм хотя бы пожалуйста.

Отсортировать список букв по их встречаемости в строке
Добрый день, есть программа которая выводит на экран статистику слова , но вывод нужно сделать именно пузырным алгоритмом, чтобы вводишь...

Отсортировать имена по количеству встречаемости в списке
Все имена из заданного списка студентов рассортировать по частоте их встречаемости в этом списке. Что-то никак не могу понять, как это...

Отсортировать слова в порядке убывания частоты их встречаемости
Вообщем задача такова: Первый файл содержит текст, который под- лежит анализу(Анализ провел успешно) Второй файл необходимо создать, и...

Отсортировать слова по частоте букв
Ввести текст. Рассортировать слова текста в соответствии с частотой, встречающейся в нем введенной с клавиатуры буквы (сортировка по...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru