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

Построить частотный словарь слов текста

11.05.2016, 12:23. Показов 13390. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны текстовый файл, в котором содержатся различные слова длиной от одного и более символов, отделенные произвольным числом пробелов. Построить частотный словарь слов текста в виде итоговой таблицы из двух колонок, указав, сколько раз встречается каждое из слов текста.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2016, 12:23
Ответы с готовыми решениями:

Создать частотный словарь слов текста из файла
Вывести алфавитный список всех слов заданного текста с указанием количества вхождений слова в текст. Предусмотреть считывание текста для...

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

Построить алфавитно-частотный словарь
Напишите программу, которая строит алфавитно-частотный словарь для файла input.txt , в котором записаны слова, состоящие из букв латинского...

12
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
11.05.2016, 20:29
Whiteghost, я эту задачу недавно решал. Смотрите решение ниже.

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
#include <iostream>
#include <cmath>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
ifstream fin("input.txt");
ofstream fout("output.txt");
int k, t, d, p = 0;
struct point
{
string x;
} res[450000]; 
while(!fin.eof()) 
{
string a, b;
getline(fin, a);
a = a + ' ';
//Удаление лишних пробелов
for (int j = 0; j < a.length(); j++)
{
if (a[j] == ' ')
{
while (a[j+1] == ' ')
{
a.erase(j+1, 1);
}
}
}
if (a.front() == ' ')
{
a.erase(0, 1);
}
//Конец удаления
k = 0;
for (int i = 0; i < a.length(); i++)
{
k++;
if ((a[i] == '-') || (isalpha(a[i]))) b += a[i]; 
if (a[i] == ' ') 
{
k--;
if ((b != "") && (b[0] != '-') && (b[b.length() - 1] != '-'))
{
res[p].x = b; //Помещаем слова в массив
p++;
}
k = 0;
b = "";
}
}
}
//Сортировка массива
for (int i = 0; i < p; i++) 
{                          
for (int j = p - 1; j > i; j--) 
{                               
if (res[j].x <= res[j-1].x)    
{
swap(res[j-1].x, res[j].x); 
}
}
}
//Конец сортировки
fout << "PROCESSED WORDS:" << endl << endl;
k = 0;
t = 0;
d = 0;
for (int i = t; i < p; i++)
{
if (res[i].x == res[i+1].x) 
{
k++;
}
else 
{
t = k;
k = 0;
if (t >= 0) 
{
fout << res[i].x << ": " << t + 1 << endl; //Количество повторяющихся слов
d++;
}
}
}
fout << endl;
fout << "QUANTITY OF WORDS: " << d << endl; //Число обработанных слов
fin.close();
fout.close();
system("pause"); 
return 0;   
}
Добавлено через 1 минуту
Whiteghost, в этой программе слова отделяются любыми знаками
1
Special user
36 / 36 / 16
Регистрация: 07.10.2013
Сообщений: 121
11.05.2016, 21:26
Даны текстовый файл, в котором содержатся различные слова длиной от одного и более символов, отделенные произвольным числом пробелов. Построить частотный словарь слов текста в виде итоговой таблицы из двух колонок, указав, сколько раз встречается каждое из слов текста.
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
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#include <vector>
#include <map>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    std::fstream file("Text.txt");
    std::vector<char> vec;
    std::map<std::string, int> words;
    std::string word;
    char a;
    if (!file.is_open())
    {
        std::cout << "Файл не может быть открыт.\n";
        getchar();
        return -1;
    }
    while (file.get(a))
    {
        vec.push_back(a);
    }
    file.close();
    std::cout << "Текст: ";
    for each (char var in vec)
    {
        std::cout << var;
    }
    file.open("Text.txt");
    while (file >> word)
    {
        words[word]++;
    }
    std::cout << "\n\nСлово\tКоличество повторений\n";
    for (auto it = words.begin(); it != words.end(); it++)
    {
        std::cout << it->first << "\t\t" << it->second << std::endl;
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 07:48  [ТС]
Спасибо! почти все верно! но один нюанс
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 07:53  [ТС]
Спасибо!) Но здесь мне вот что видает
Миниатюры
Построить частотный словарь слов текста  
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 07:54  [ТС]
Спасибо! почти все верно! но один нюанс
Миниатюры
Построить частотный словарь слов текста  
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
12.05.2016, 08:17
Лучший ответ Сообщение было отмечено Whiteghost как решение

Решение

Вот код, который компилируется в VS2008
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
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std; 
int main()
{
    setlocale(LC_ALL,"Rus");
    ifstream file("text.txt");
    if (!file)
    {
        std::cout << "Файл не может быть открыт.\n";
        system("pause");
        return -1;
    }
    string word;
    map<string, int> words;
    char c;
    while (file >> word)
    {
        file.get(c);
        cout<<word<<c;
        words[word]++;
    }
    cout << "\n\nСлово\tКоличество повторений\n";
    map<string, int>::iterator it;
    for (it = words.begin(); it != words.end(); it++)
    {
        cout << it->first << "\t\t" << it->second << endl;
    }
    system("pause");
    return 0;
}
Добавлено через 3 минуты
p.s. Whiteghost, ошибки можно было скопировать в буфер обмена выделив их и нажав ctrl^C,
а потом вставить в тему нажав ctrl^V.
Не пришлось бы мучиться с картинками.
1
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 09:06  [ТС]
Запустилось.. но
Миниатюры
Построить частотный словарь слов текста  
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
12.05.2016, 09:10
Файл с текстом должен лежать рядом с ехе-шником.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 09:12  [ТС]
Есть, но все равно.. или не так назвал?
Миниатюры
Построить частотный словарь слов текста  
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 09:16  [ТС]
забрал прикладку txt...
И вот что
Миниатюры
Построить частотный словарь слов текста  
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
12.05.2016, 09:43
Цитата Сообщение от Whiteghost Посмотреть сообщение
И вот что
А теперь самое время воспользоваться отладчиком
Как пользоваться отладчиком (в Visual Studio)
Поставьте останов на строку 19 и смотрите, что читается из файла.
Скорее всего, он пустой.

Добавлено через 2 минуты
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Файл с текстом должен лежать рядом с ехе-шником
Он должен лежать в текущей директории.
Если запускать из-под среды разработки, то текущая та, где проект.
Если из командной строки - то, та, что написана слева от знака ">".
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 14
12.05.2016, 09:59  [ТС]
я в программе c++ builder 6

Добавлено через 12 минут
аа все работает! нужно в тхт файле писать слова)) Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2016, 09:59
Помогаю со студенческими работами здесь

Составить частотный словарь вводимого текста
14. Составить частотный словарь вводимого текста. Распечатать его по алфавиту, а справа от каждого слова – частоту, с которой оно...

Составить частотный словарь вводимого текста
Составить частотный словарь вводимого текста (несколько строк) тоесть распечатать строку следующим образом: справа от каждого...

Частотный словарь из слов текстового файла в виде дерева двоичного поиска
Задача: Построить частотный словарь из слов текстового файла в виде дерева двоичного поиска. Вывести его на экран в виде дерева....

Частотный словарь.
здравствуйте помогите плиз решить последнюю задачу для зачета.вот условие: дан текст.получить сколько раз в нем присутствует каждое...

Описать функцию, формирующую словарь данного текста в виде массива слов
Дан текст (2-3 строки) в файле F1. Текст состоит из слов, отделённых друг от друга пробелами или сочетанием символов &quot;точка...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru