0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
1

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

04.06.2019, 15:52. Показов 1835. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан символьный файл f, содержащий произвольный текст. Получить 10 наиболее часто встречающихся букв и число их появления. Исходная информация береться из текстового файла и после преобразования записывалась в другой текстовый файл.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2019, 15:52
Ответы с готовыми решениями:

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

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

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

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

16
684 / 4854 / 262
Регистрация: 11.08.2016
Сообщений: 3,104
04.06.2019, 17:26 2
Именно букв? И если да, то каких, русских, латинских? Или символов вообще?
0
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
04.06.2019, 20:27  [ТС] 3
текст дан произвольный, и из этого произвольного текста 10 наиболее часто встречающихся латинских букв записать во второй файл.
0
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
05.06.2019, 15:56  [ТС] 4
Вот ищет для 1 буквы, нужно для 10, не пойму как зациклить чтоб учитывались и предыдущие

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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{    setlocale(LC_ALL, "Russian");
    size_t letters[256] = { 0 };
    ifstream f("f.txt");
 
     while (!f.eof())
    {
        int ch = f.get();
        if (isalpha(ch)) //Только  буквы
            ++letters[ch];
    }
 
 
 
     int ch = 0;
    for (int i = 1; i < 256; ++i)
        if (letters[i] > letters[ch])
            ch = i;
    cout << "Буква: " << char(ch)  << "\nКоличество: " << letters[ch];
    cout << endl;
 
 
 
    system("pause");
    return 0;
}
0
51 / 32 / 19
Регистрация: 25.05.2019
Сообщений: 95
05.06.2019, 18:49 5
https://www.cyberforum.ru/post13591535.html
1
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2019, 18:50 6
Цитата Сообщение от ngsernur Посмотреть сообщение
Вот ищет для 1 буквы, нужно для 10, не пойму как зациклить чтоб учитывались и предыдущие
Нужно отсортироватть массив letters и взять 10 последних элементов (или 10 первых, если сортировать по-убыванию)

Вернее, соврал, тогда в массиве надо хранить пару символ-количество
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
05.06.2019, 20:50  [ТС] 7
Цитата Сообщение от ibsq Посмотреть сообщение
https://www.cyberforum.ru/post13591535.html
Мне попроще нужно
0
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2019, 21:35 8
Цитата Сообщение от ngsernur Посмотреть сообщение
https://www.cyberforum.ru/post13591535.html
Мне попроще нужно
Сильно проще не получится
C++
1
2
3
4
5
6
7
8
9
10
#include <map>
.......
std::multimap<size_t, char, std::greater> items;
   for (int i = 1; i < 256; ++i)
        if (letters[i] != 0) 
              items.insert(letters[i], char(i));
 
size_t n = 10;
for (auto it = items.begin(), end = items.end(); n && it != end; ++it, --n)
   cout << "Буква: " << it->second  << "\nКоличество: " << it->first;
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
05.06.2019, 23:03  [ТС] 9
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сильно проще не получится
Компилятор ругается
0
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2019, 23:21 10
Цитата Сообщение от ngsernur Посмотреть сообщение
Компилятор ругается
Ну, если бы только он. И что говорит?
Код тоже покажи.
0
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
05.06.2019, 23:47  [ТС] 11
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сильно проще не получится
Компилятор ругается
.............
1>d:\с++\5\5\55.cpp(22): error C3203: greater: неспециализированный класс шаблон нельзя использовать в качестве аргумента шаблон для параметра шаблон "_Pr", требуется действительный тип
1>d:\с++\5\5\55.cpp(22): error C2955: std::greater: для использования класса шаблон требуется список аргументов шаблон
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(110): см. объявление "std::greater"
1>d:\с++\5\5\55.cpp(25): error C2664: std::_Tree_iterator<_Mytree> std::multimap<_Kty,_Ty,_Pr>::insert<char>(std::_Tree_const_iterator<_Mytree>,_Va lty &&): невозможно преобразовать параметр 1 из "size_t" в "std::_Tree_const_iterator<_Mytree>"
1> with
1> [
1> _Mytree=std::_Tree_val<std::_Tmap_traits<size_t,char,int,std::allocator<std:ai r<const size_t,char>>,true>>,
1> _Kty=size_t,
1> _Ty=char,
1> _Pr=int,
1> _Valty=char
1> ]
1> and
1> [
1> _Mytree=std::_Tree_val<std::_Tmap_traits<size_t,char,int,std::allocator<std:ai r<const size_t,char>>,true>>
1> ]
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
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
 
int main()
{    setlocale(LC_ALL, "Russian");
    size_t letters[256] = { 0 };
    ifstream f("f.txt");
 
     while (!f.eof())
    {
         int ch = f.get();
        if (isalpha(ch)) //Только  буквы
            ++letters[ch];
        cout<<" "<<char(ch);
    }
    int ch = 0;
 
 
   std::multimap<size_t, char, std::greater> items;
   for (int i = 1; i < 256; ++i)
        if (letters[i] != 0) 
              items.insert(letters[i], char(i));
 
size_t n = 10;
for (auto it = items.begin(), end = items.end(); n && it != end; ++it, --n)
   cout << "Буква: " << it->second  << "\nКоличество: " << it->first;
    cout << endl;
    
 
 
 
    system("pause");
    return 0;
}
0
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.06.2019, 23:57 12
Цитата Сообщение от ngsernur Посмотреть сообщение
1>d:\с++\5\5\55.cpp(22): error C2955: std::greater: для использования класса шаблон требуется список аргументов шаблон
Поставь там std::greater<size_t>

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

Добавлено через 2 минуты
Цитата Сообщение от ngsernur Посмотреть сообщение
std::multimap<size_t, char, std::greater> items;
* *for (int i = 1; i < 256; ++i)
* * * * if (letters[i] != 0)
* * * * * * * items.insert(letters[i], char(i));
Сделай items.insert(std::make_pair(letters[i], char(i)));

Добавлено через 37 секунд
Либо items.emplace(letters[i], char(i));
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
06.06.2019, 00:13  [ТС] 13
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сообщение от ngsernur
1>d:\с++\5\5\55.cpp(22): error C2955: std::greater: для использования класса шаблон требуется список аргументов шаблон
Поставь там std::greater<size_t>
Добавлено через 1 минуту
Остальные ошибки, похоже, наведённые. Покажи, если не скомпилится
Добавлено через 2 минуты
Сообщение от ngsernur
std::multimap<size_t, char, std::greater> items;
* *for (int i = 1; i < 256; ++i)
* * * * if (letters[i] != 0)
* * * * * * * items.insert(letters[i], char(i));
Сделай items.insert(std::make_pair(letters[i], char(i)));
Добавлено через 37 секунд
Либо items.emplace(letters[i], char(i));
стало еще хуже, пишет много ошибок. Вообщем хз что то)
0
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
06.06.2019, 09:13 14
Цитата Сообщение от ngsernur Посмотреть сообщение
стало еще хуже, пишет много ошибок. Вообщем хз что то)
Ну так покажи ошибки. И код.
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
06.06.2019, 12:13  [ТС] 15
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну так покажи ошибки. И код.
............................................................................. вывод
>d:\с++\5лаба\5.cpp(22): error C2976: std::multimap: слишком мало аргументов шаблон
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\map(278): см. объявление "std::multimap"
1>d:\с++\5лаба\5.cpp(22): error C2133: items: неизвестный размер
1>d:\с++\5лаба\5.cpp(22): error C2512: std::multimap: нет подходящего конструктора по умолчанию
1>d:\с++\5лаба\5.cpp(22): error C2371: items: переопределение; различные базовые типы
1> d:\с++\5лаба\5.cpp(22): см. объявление "items"
1>d:\с++\5лаба\5.cpp(25): error C2663: std::multimap<_Kty,_Ty,_Pr,_Alloc>::insert: для 3 перегрузок нет допустимого преобразования для указателя "this"
1>d:\с++\5лаба\5.cpp(28): error C2663: std::_Tree<_Traits>::begin: для 2 перегрузок нет допустимого преобразования для указателя "this"
1>d:\с++\5лаба\5.cpp(28): fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции
................................................................................ ...............................


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
#include <iostream>
#include <fstream>
#include <string>
#include <map>
using namespace std;
 
int main()
{    setlocale(LC_ALL, "Russian");
    size_t letters[256] = { 0 };
    ifstream f("f.txt");
 
     while (!f.eof())
    {
         int ch = f.get();
        if (isalpha(ch)) //Только  буквы
            ++letters[ch];
        cout<<" "<<char(ch);
    }
    int ch = 0;
 
 
   std::multimap<size_t> items; std::greater<size_t> items;
   for (int i = 1; i < 256; ++i)
        if (letters[i] != 0) 
         items.insert(std::make_pair(letters[i], char(i)));
 
size_t n = 10;
for (auto it = items.begin(), end = items.end(); n && it != end; ++it, --n)
   cout << "Буква: " << it->second  << "\nКоличество: " << it->first;
    cout << endl;
    
 
 
 
    system("pause");
    return 0;
}
0
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
06.06.2019, 12:38 16
Лучший ответ Сообщение было отмечено ngsernur как решение

Решение

Цитата Сообщение от ngsernur Посмотреть сообщение
std::multimap<size_t> items; std::greater<size_t> items;
std::multimap<size_t, char, std::greater<size_t>> items;
1
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 80
06.06.2019, 14:21  [ТС] 17
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::multimap<size_t, char, std::greater<size_t>> items;
Ошибок больше нет, но ничего не выводит, просто пустое окно.

Добавлено через 7 минут
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
std::multimap<size_t, char, std::greater<size_t>> items;
Все заработал, спасибо, файл не хотел читаться.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2019, 14:21
Помогаю со студенческими работами здесь

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

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

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

Дан файл, содержащий произвольный текст; определить, чего в нем больше: цифр или букв
дан файл содержащий производный текст .определить сколько в нем больше цифр или букв.напишите...

Дан файл, содержащий произвольный текст. Выяснить, чего в нём больше: русских букв или цифр
Дан файл, содержащий произвольный текст. Выяснить, чего в нём больше: русских букв или цифр.

Дан файл, содержащий произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.
&quot;Дан файл, содержащий произвольный текст. Выяснить, чего в нем больше: русских букв или цифр.&quot;...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru