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

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

29.05.2017, 20:19. Показов 7392. Ответов 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
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru