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

Найти и напечатать, сколько раз повторяется в тексте каждое слово

29.05.2017, 20:19. Показов 7424. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти и напечатать, сколько раз повторяется в тексте каждое слово
Есть код на Java:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
        String message = "я ленивая задница, мне лень потратить 10 минут на решение простейшей задачи. Я лучше пойду поем.";
        String [] words = message.toLowerCase().replaceAll("[-.?!)(,:]", "").split("\\s");
 
        Map<String, Integer> counterMap = new HashMap<>();
        for (String word : words) {
            if(!word.isEmpty()) {
                Integer count = counterMap.get(word);
                if(count == null) {
                    count = 0;
                }
                counterMap.put(word, ++count);
            }
        }
 
        for(String word : counterMap.keySet()) {
            System.out.println(word + ": " + counterMap.get(word));
        }
    }
Но мне нужно на С++. Помогите пожалуйста, я не знаю как перевести код из Java на С++.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2017, 20:19
Ответы с готовыми решениями:

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

Определить, сколько раз в заданном массиве слов повторяется каждое слово
Задан массив слов. Определить, сколько раз в нём повторяется каждое слово.

Определить, сколько раз в тексте повторяется первое слово
В общем задание таково: есть файл text.txt ( с текстом ) программа должна прочитать его и сказать сколько раз в тексте повторяется первое...

5
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 11
29.05.2017, 21:05  [ТС]
Есть задание:
Найти и напечатать, сколько раз в тексте повторяется каждое слово, которое встречается в нем.
Вот моя наработка:
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 <sstream>
 
using namespace std;
 
int main()
{
    setlocale (0, "rus");
    char s[80];
    int slovo, count = 1;
    cout << "Введите английский текст: " << endl;
    cin.get (s, 80);
    stringstream tmp;
    tmp << s;
    
   for (int i = 0; i < 80; i++)
    {
       s[i] + s[i+1];
        count++;
    }
    
    while (tmp >> s)
    {
       cout << "Слово <<" << s << ">> встречаеться " << count << " раз." << endl;
    }
  
    system("pause");
    return 0;
}
Как правильно посчитать эти слова?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
29.05.2017, 21:17
PaulDark,
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 <string>
#include <algorithm>
#include <Windows.h>
#include <sstream>
#include <map>
 
bool IsPunct(const char&);
 
int main()
{
    std::string str = "qwe, ret ergs, dfg dfg qwe. QWE fdg. Dfg lkm afa ergs";
    auto new_end = std::remove_if(str.begin(), str.end(), IsPunct);
    str.erase(new_end, str.end());
    std::cout << str << std::endl;
    std::istringstream iss(str);
    std::string word;
    std::map<std::string, std::size_t> words;
    while(iss >> word)
    {
        std::transform(word.begin(), word.end(), word.begin(), tolower);
        ++words[word];
    }
    for (const auto &w : words)
        std::cout << w.first << " occurs " << w.second << " times" << std::endl;
    return 0;
}
 
bool IsPunct(const char &ch)
{
    std::string punctStr = "[-.?!)(,:]";
    return (punctStr.find(ch, 0)!=std::string::npos);
}
1
 Аватар для Fixer_84
1505 / 969 / 812
Регистрация: 30.04.2016
Сообщений: 3,337
29.05.2017, 21:20
PaulDark, вот мой вариант. Если очень много слов - придется подождать.

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
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
 
using namespace std;
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    string a, b;
    vector<string> x;
    int k;
    while (getline(fin, a))
    {
        for (int i = 0; i < a.length(); i++)
        {
            b += a[i];
            if (!(isalpha(a[i])))
            {
                b.pop_back();
                if (b != "")
                    x.push_back(b); //Помещаем слова в вектор
                b = "";
            }
        }
    }
    fout << "Processed words:" << endl;
    for (int j = 0; j < x.size(); j++)
    {
        k = 0;
        for (int i = j + 1; i < x.size(); i++)
        {
            if (x[j] == x[i])
            {
                while (x[j] == x[i])
                {
                    x.erase(x.begin() + i); //Удаляем из вектора повторы
                    k++; //Подсчитываем количество повторов для каждого слова
                }
            }
        }
        k++;
        fout << x[j] << ": " << k << endl; //Выводим слова и их вхождения (сохраняя порядок)
    }
    fout << "Quantity of words: " << x.size() << endl; //Выводим общее количество слов
    fin.close();
    fout.close();
    system("pause");
    return 0;
}
1
Рэмбо комнатный
 Аватар для GeFacle
103 / 103 / 99
Регистрация: 05.03.2017
Сообщений: 511
29.05.2017, 21:44
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 <string>
 
using namespace std;
 
int main()
{
    string str,str1="",str2="";
    int k=0;
    getline(cin,str);
    for (int i=0; i<str.length()+1; i++)
    {
        if (str[i]!=' ' && str[i]!='\0')
        {
            str1=str1+str[i];
        }
        else
        {
            for (int j=0; j<str.length()+1; j++)
            {
                if (str[j]!=' ' && str[j]!='\0')
                {
                    str2=str2+str[j];
                }
                else
                {
                    if (str1==str2)
                    {
                        k++;
                    }
                    str2="";
                }
            }
        }
        if (k>1)
        {
            cout << "Slovo " << str1 << " vstrechaetsya " << k << " raz" << endl ;
        }
        k=0;
        str1="";
    }
 
    return 0;
}
Добавлено через 1 минуту
я не помню, изменял ли этот код, но ранее он находил количество каждого вхождения слова в строку
1
0 / 0 / 0
Регистрация: 29.05.2017
Сообщений: 11
30.05.2017, 10:34  [ТС]
Fixer_84, В 22 строке выдает ошибку.

Добавлено через 45 секунд
GeFacle, ваш код нужно изменять. Он работает неправильно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2017, 10:34
Помогаю со студенческими работами здесь

Помогите пожалуйста Сколько раз в тексте встречается каждое слово? на Cи
Помогите пожалуйста Сколько раз в тексте встречается каждое слово? на Cи

Помогите пожалуйста Сколько раз в тексте встречается каждое слово на Cи
Помогите пожалуйста Сколько раз в тексте встречается каждое слово? на Cи

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

Определить сколько раз заданное слово повторяется в предложении
Ввести любое предложение и определить, сколько раз повторяется в нем заданное слово.

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru