Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ILya1209
0 / 0 / 0
Регистрация: 03.02.2019
Сообщений: 3
1

Определить слово, которое чаще всего встречается в файле

03.02.2019, 12:27. Просмотров 500. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста с задачей. Желательно простое решение в потоках.
Строки текстового файла input. txt состоят из слов, разделенных одним
или несколькими пробелами. Перед первым, а также после последнего слова
строки пробелы могут отсутствовать. Требуется определить слово, которое
чаще всего встречается в файле. Результат вывести на консоль в форме,
удобной для чтения
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2019, 12:27
Ответы с готовыми решениями:

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

Определить, какое слово в строке встречается чаще всего
Определить какое слово встречается в строке чаще всего.

Определить какое слово в строке встречается чаще всего
ребят,помогите.Для Вас же это как семечки 1. Определить какое слово в строке встречается чаще...

Определить, какое слово встречается в строке чаще всего
1. Определить какое слово встречается в строке чаще всего. можно с пояснениями если не сложно

9
marat_miaki
271 / 224 / 124
Регистрация: 08.04.2013
Сообщений: 996
03.02.2019, 12:46 2
Выведет что имеем в файл и консоль,надеюсь максимум сами найдете
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
#include <iostream>
#include <string>
#include <map>
#include <fstream>
 
using namespace std;
 
int main()
{
setlocale(LC_ALL, "Rus");
map <string,int> words;
ifstream in;
in.open("instr.txt");
string word;
while (in>>word)
words[word]++;
ofstream out;
out.open("outstr.txt");
map <string,int>::iterator it;
for ( it=words.begin();it!=words.end();it++)
{
 
out<<(*it).first<<"--"<<(*it).second<<";"<<endl;
 
std::cout <<(*it).first<<"--"<<(*it).second<< endl; 
}
cout<<"Done"<<endl;
return 0;
}
0
valen10
Параллельный Кот
1426 / 592 / 230
Регистрация: 25.03.2016
Сообщений: 1,359
Завершенные тесты: 1
03.02.2019, 12:47 3
Цитата Сообщение от ILya1209 Посмотреть сообщение
Требуется определить слово, которое чаще всего встречается в файле
Что должна вывести программа, если таких слов несколько?
0
QuakerRUS
816 / 626 / 302
Регистрация: 30.10.2017
Сообщений: 1,898
Завершенные тесты: 4
03.02.2019, 13:07 4
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 <cstdlib>
#include <string>
#include <iostream>
#include <fstream>
#include <map>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    map<string, int> m;
    
    for (string temp; fin >> temp; )
        m[temp]++;
 
    int max = 1;
 
    for (const auto &x : m)
    {
        if (x.second > max)
            max = x.second;
    }
 
    for (const auto &x : m)
    {
        if (x.second == max)
            cout << x.first << endl;
    }
    
    system("pause");
    return 0;
}
0
ILya1209
0 / 0 / 0
Регистрация: 03.02.2019
Сообщений: 3
03.02.2019, 13:09  [ТС] 5
Последнее наиболее часто встречающееся
0
New man
301 / 213 / 74
Регистрация: 23.05.2011
Сообщений: 970
Завершенные тесты: 6
03.02.2019, 13:10 6
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
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
 
std::vector<std::string> most_frequent_words(std::istream& in)
{
    using namespace std;
    unordered_map<string, size_t> counter;
    string readed;
    while(in>>readed)
         ++counter[move(readed)];
    
    vector<string> result;
    if (counter.size()==0)
        return result;
    size_t max_count = counter.begin()->second;
   
    for(auto& v:counter)
        if(v.second>max_count)
        {
            result.clear();
            max_count = v.second;
            result.push_back(v.first);
        }
        else if (v.second==max_count)
            result.push_back(v.first);
    return result;
}
 
int main()
{
    std::ifstream input("text.txt");
    for(const std::string& str:most_frequent_words(input))
        std::cout<<str<<std::endl;
}
0
ILya1209
0 / 0 / 0
Регистрация: 03.02.2019
Сообщений: 3
03.02.2019, 13:19  [ТС] 7
Цитата Сообщение от valen10 Посмотреть сообщение
Что должна вывести программа, если таких слов несколько?
Последнее наиболее часто встречающееся

Добавлено через 3 минуты
А можно пожалуйста решение без использования контейнеров?
0
marat_miaki
271 / 224 / 124
Регистрация: 08.04.2013
Сообщений: 996
03.02.2019, 13:39 8
Цитата Сообщение от ILya1209 Посмотреть сообщение
А можно пожалуйста решение без использования контейнеров?
ну это то же самое что ходить пешком, когда все ездят уже на мерсах, это же стандарт с++
0
valen10
Параллельный Кот
1426 / 592 / 230
Регистрация: 25.03.2016
Сообщений: 1,359
Завершенные тесты: 1
03.02.2019, 13:40 9
Цитата Сообщение от ILya1209 Посмотреть сообщение
Последнее наиболее часто встречающееся
У них какой-то порядок определен? Никак не могу взять в толк. Допустим, есть текст:
Код
w1 w2 w3 w3 w2 w1 w1 w3 w2
Что должна вывести программа?
0
ReDoX
439 / 327 / 170
Регистрация: 01.07.2015
Сообщений: 1,162
03.02.2019, 13:44 10
Цитата Сообщение от ILya1209 Посмотреть сообщение
А можно пожалуйста решение без использования контейнеров?
Ну что-то типа такого, см. комменты и исправьте код

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
ifstream inp("input.txt");
 
int cnt = 0;
 
while (inp.peek() != EOF) {
  string word;
  inp >> word;
 
  ++cnt;
}
 
inp.close();
 
int max_cnt = 0;
string max_word;
 
for (int i = 0; i < cnt; ++i) {
  inp.open("input.txt");
 
  int j = 0;
 
  string word;
 
  // Нужно найти i слово в файле, по-моему, так
  while (j != i) {
    inp >> word;
 
    ++j;
  }
 
  inp.close();
 
  // Тут как-то нужно перемещать указатель в начало файла, но я не знаю как, поэтому просто переоткрываю файл
 
  inp.open("input.txt");
 
  string t;
 
  int cnt = 0;
 
  while (inp.peek() != EOF) {
    inp >> t;
    if (t == word) ++cnt;
  }
 
  if (cnt >= max_cnt) { max_cnt = cnt; max_word = word; }
 
  inp.close();
}
 
cout << max_word;
Код, ВОЗМОЖНО, нерабочий, поэтому не стоит воспринимать его как решение.
0
03.02.2019, 13:44
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2019, 13:44

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить, какое слово встречается в строке чаще всего
Задана строка, которая состоит из символов. Символы сочетают в слова. Слова отделяются одним или...

Определить какая буква чаще всего встречается в текстовом файле
Определить какая буква чаще всего встречается в текстовом файле

Определить какая буква чаще всего встречается в заданном текстовом файле.
Определить какая буква чаще всего встречается в заданном текстовом файле. Так же есть предложение...

Выполнить ввод строки и определить какое слово встречается в строке чаще всего
Задана строка, состоящая из символов. Символы объединяются в слова. Слова друг от друга отделяются ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.