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

Построить алфавитно-частотный словарь

27.10.2017, 16:13. Показов 6198. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая строит алфавитно-частотный словарь для файла input.txt , в котором записаны слова, состоящие из букв латинского алфавита (заглавных и строчных) и знаков препинания (.,:;!?). Заглавные и строчные буквы не различаются. Знаки препинания нужно игнорировать. Слова необходимо отсортировать в порядке убывания частоты (сначала слова, которые встретились чаще всего). Слова с одинаковой частотой должны располагаться в алфавитном порядке.

Входные данные
Входной файл содержит неизвестное количество строк, в каждой из которых записаны слова, состоящее из букв латинского алфавита (заглавных и строчных) и знаков препинания (.,:;!?). В одной строке могут быть записаны несколько слов, разделенных произвольным количеством пробелов. Последняя строка файла – пустая. Пробелы могут быть также в начале и в конце строк. После знака препинания обязательно стоит пробел.

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

Примеры
входные данные
I can. He can. Jump!
I go; jump: want she?
girl!
выходные данные
can 2
i 2
jump 2
girl 1
go 1
he 1
she 1
want 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2017, 16:13
Ответы с готовыми решениями:

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

Алфавитно-частотный словарь: новый элемент добавить в голову
алфавитно-частотный словарь. задание:новый элемент добавить в голову. помогите пожалуйста составить программу:)очень срочно нужно к...

Алфавитно-частотный словарь на основе односвязного списка с применением токенов
Здравствуйте, дорогие форумчане! Возникла задача создать алфавитно-частотный словарь на основе односвязного списка с применением токенов....

3
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.10.2017, 16:42
Это задание включает в себя
Построить алфавитно-частотный словарь и
Построить алфавитно-частотный словарь
0
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
27.10.2017, 18:38
OlgaOlgaa, вот написал по простому
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
#include <iostream>
#include <fstream>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
char* readfile(const char* filename);
void  output_ws(std::ostream& _out, const char* filename);
 
struct skey {
    char*  key;
    mutable size_t cnt;
    skey(void){}
    skey(char* p):key(p), cnt(1){}
 
    bool operator < (const skey& k) const {
        return (strcmp(key, k.key) < 0);
    }
};
 
struct ncmp {
    bool operator () (const skey* a, const skey* b) const {
        return (a->cnt > b->cnt);
    }
};
 
int main(void){
    char fn[] = "file.txt";
    output_ws(std::cout, fn);
    std::cin.get();
    return 0;
}
 
void output_ws(std::ostream& _out, const char* filename){
    char* buf = readfile(filename);
    if(buf == NULL)
        return;
 
    const char delim[] = " \t\r\n,.!?;:_";
    std::set<skey> kv;
    std::set<skey>::const_iterator it;
    for(char* p = strtok(buf, delim); p != NULL; p = strtok(NULL, delim)){
        if((it = kv.find(p)) != kv.end())
            ++it->cnt;
        else
            kv.insert(p);
    }
 
    std::vector<const skey*> vs(kv.size());
    std::vector<const skey*>::iterator pv = vs.begin();
    for(it = kv.begin(); it != kv.end(); ++it)
        *pv++ = &(*it);
 
    std::sort(vs.begin(), vs.end(), ncmp());
    for(pv = vs.begin(); pv != vs.end(); ++pv)
        _out << (*pv)->key << ' ' << (*pv)->cnt << std::endl;
    vs.clear();
    kv.clear();
    delete[] buf;
}
 
//чтение файла
char* readfile(const char* filename){
    std::ifstream fp(filename, std::ifstream::binary);
    if(!fp.is_open())
        return NULL;
 
    fp.seekg(0, fp.end);
    long n = fp.tellg();
    if(n <= 0){
        fp.close();
        return NULL;
    }
 
    char* buf = new (std::nothrow) char[n + 1];
    if(buf == NULL){
        fp.close();
        return NULL;
    }
    fp.seekg(0, fp.beg);
    fp.read(buf, n);
    int err = fp.fail();
    fp.close();
 
    if(err){
        delete[] buf;
        buf = NULL;
    } else
        buf[n] = '\0';
    return buf;
}
0
194 / 174 / 30
Регистрация: 10.07.2012
Сообщений: 800
27.10.2017, 18:48
эта задача предполагает, что вы продемонстрируете умение пользоваться std::map / std::unordered_map .
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.10.2017, 18:48
Помогаю со студенческими работами здесь

Построить частотный словарь слов текста
Даны текстовый файл, в котором содержатся различные слова длиной от одного и более символов, отделенные произвольным числом пробелов....

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

Частотный словарь приставок
Помогите пожалуйста, нужно составить частотный словарь приставок, имеющегося текстового файла. Я написала программу, но сразу же при...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru