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

Записать в конец файла таблицу с указанием трех наиболее часто встречающихся слов

10.12.2018, 00:57. Показов 2031. Ответов 4
Метки нет (Все метки)

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

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

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

Вывести таблицу с указанием трех наиболее часто встречающихся слов
Помогите пожалуйста! Написать программу, получающую строку текста и возвращающую таблицу с указанием трех наиболее часто встречающихся...

4
 Аватар для igorrr37
2895 / 2042 / 992
Регистрация: 21.12.2010
Сообщений: 3,791
Записей в блоге: 9
22.12.2018, 11:11
Результат выводит в консоль
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
#include <iostream>
#include <string>
#include <regex>
#include <fstream>
#include <thread>
#include <algorithm>
#include <cctype>
#include <list>
#include <utility>
#include <map>
#include <unordered_map>
#include <clocale>
#include <functional>
 
 
// протестировано в MSVS2017
int main()
{
    setlocale(LC_CTYPE, "rus");
    std::fstream fs{"in.txt", std::ios::in | std::ios::out | std::ios::app};
    if (fs.is_open())
    {
        std::regex rgx{"[А-Яа-яЁё[:alpha:]\\d]+"};
        auto lmd{ [&rgx](std::multimap<int, std::string, std::greater<int>>& mmp, auto&& str)
        {
            std::unordered_map<std::string, int> ump;
            std::for_each(std::sregex_iterator{ str.begin(), str.end(), rgx }, {}, [&str, &ump](auto const& mr)
            {
                std::transform(str.begin() + mr.position(), str.begin() + mr.position() + mr.length(), str.begin() + mr.position(), [](char c) 
                {
                    return tolower(unsigned char (c));
                });
                ++ump[mr.str()];
            });
            for (auto const& pr : ump)
            {
                mmp.insert({ pr.second, pr.first });
            }
        } };
        std::list<std::multimap<int, std::string, std::greater<int>>> lm;
        std::list<std::thread> lt;
        std::string str;
        while (std::getline(fs, str))
        {
            lm.emplace_back();
            lt.emplace_back(lmd, std::ref(lm.back()), std::move(str));
        }
        for (auto& thr : lt)
        {
            thr.join();
        }
        for (auto const& mmp : lm)
        {
            int i = 0;
            for (auto const& pr : mmp)
            {
                std::cout << pr.second << ": " << pr.first << "    ";
                if (++i == 3)
                {
                    break;
                }
            }
            std::cout << std::endl;
        }
 
        fs.close();
    }
    else
    {
        std::cerr << "Unable to open file\n";
    }
}
1
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 75
23.12.2018, 00:10  [ТС]
спасибо, но как записать в конец этого же файла таблицу с ответом?
0
 Аватар для igorrr37
2895 / 2042 / 992
Регистрация: 21.12.2010
Сообщений: 3,791
Записей в блоге: 9
23.12.2018, 02:08
Лучший ответ Сообщение было отмечено Nishen как решение

Решение

Lucky_fart, перенаправить вывод из cout в файл
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
#include <iostream>
#include <string>
#include <regex>
#include <iostream>
#include <string>
#include <regex>
#include <fstream>
#include <thread>
#include <algorithm>
#include <cctype>
#include <list>
#include <utility>
#include <map>
#include <unordered_map>
#include <clocale>
#include <functional>
 
 
// протестировано в MSVS2017
int main()
{
    setlocale(LC_CTYPE, "rus");
    std::fstream fs{ "in.txt", std::ios::in | std::ios::out | std::ios::app };
    if (fs.is_open())
    {
        std::regex rgx{ "[А-Яа-яЁё[:alpha:]\\d]+" };
        auto lmd{ [&rgx](std::multimap<int, std::string, std::greater<int>>& mmp, auto&& str)
        {
            std::unordered_map<std::string, int> ump;
            std::for_each(std::sregex_iterator{ str.begin(), str.end(), rgx }, {}, [&str, &ump](auto const& mr)
            {
                std::transform(str.begin() + mr.position(), str.begin() + mr.position() + mr.length(), str.begin() + mr.position(), [](char c)
                {
                    return tolower(unsigned char(c));
                });
                ++ump[mr.str()];
            });
            for (auto const& pr : ump)
            {
                mmp.insert({ pr.second, pr.first });
            }
        } };
        std::list<std::multimap<int, std::string, std::greater<int>>> lm;
        std::list<std::thread> lt;
        std::string str;
        while (std::getline(fs, str))
        {
            lm.emplace_back();
            lt.emplace_back(lmd, std::ref(lm.back()), std::move(str));
        }
        for (auto& thr : lt)
        {
            thr.join();
        }
        fs.clear();
        fs << "\n***\n";
        for (auto const& mmp : lm)
        {
            int i = 0;
            for (auto const& pr : mmp)
            {
                fs << pr.second << ": " << pr.first << "    ";
                if (++i == 3)
                {
                    break;
                }
            }
            fs << std::endl;
        }
 
        fs.close();
    }
    else
    {
        std::cerr << "Unable to open file\n";
    }
}
1
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 75
25.12.2018, 01:38  [ТС]
спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.12.2018, 01:38
Помогаю со студенческими работами здесь

Перевод с C# на С++ (в заданном тексте найти 20 наиболее часто встречающихся слов с указанием количества использования каждого из них)
Помогите пожалуйста перевести с C# на С++.... Я не очень хорошо сейчас знаю библиотеку STL... Задание такое: В заданном тексте найти 20...

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

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

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

Поиск наиболее часто встречающихся слов
Помогите пожалуйста, нужно определить десятку наиболее часто встречающихся слов в 5 столбце Strigngrid


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru