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

Как найти количество повторений слова в строке?

24.11.2015, 17:08. Показов 2085. Ответов 6
Метки нет (Все метки)

Имеется массив слов. Нужно найти, сколько раз в нем повторяется каждое слово. Пробовал вот так:
C++
1
2
3
4
5
6
7
8
9
10
int cnt = 0; char* find;
    for (int i = 0; i<Count; i++)
    {
        find = words[i];
        for (int j = 0; j<Count; j++)
            if (find == words[j])
                cnt++;
        cout << find <<" -> "<< cnt <<endl;
        cnt = 0;
    }
Но такой метод почему то не работает. В чем может быть проблема?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Как найти количество повторений слова в строке?  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2015, 17:08
Ответы с готовыми решениями:

Как найти количество повторений слова в строке?
Доброго времени суток! Такой вопрос - как найти количество повторений каждого слова в строке? Вот...

Количество повторений слова в строке
Вот код программы. В роди бы написана правильно, но компилятор выдает &quot;Работа программы завершена!&quot;...

Разбить строку на слова и вывести количество повторений этих слов в строке
Слова разделены пробелами

Определите слова, которые встречаются в строке более одного раза, и количество их повторений
Приветствую, форумчане! Задание: дана строка слов, разделенных пробелами. Определите слова,...

6
Эксперт PHP
2988 / 2506 / 1182
Регистрация: 14.05.2014
Сообщений: 7,076
Записей в блоге: 1
24.11.2015, 17:16 2
Цитата Сообщение от Ascold Посмотреть сообщение
C++
1
find == words[j]
указатели сравниваете.
C++
1
2
3
4
5
6
7
8
9
10
int cnt = 0; char* find;
for (int i = 0; i < Count; i++)
{
    find = words[i];
    for (int j = 0; j < Count; j++)
        if (strcmp(find, words[j]) == 0)
            cnt++;
    cout << find <<" -> "<< cnt <<endl;
    cnt = 0;
}
0
1 / 1 / 3
Регистрация: 27.01.2015
Сообщений: 116
24.11.2015, 17:26  [ТС] 3
Этот код выводит повторяющиеся слова столько раз, сколько они встречаются, причем количество их встреч в каждом выводе другое:
0
Миниатюры
Как найти количество повторений слова в строке?  
Эксперт PHP
2988 / 2506 / 1182
Регистрация: 14.05.2014
Сообщений: 7,076
Записей в блоге: 1
24.11.2015, 17:35 4
Цитата Сообщение от Ascold Посмотреть сообщение
повторяющиеся слова столько раз, сколько они встречаются
Я знаю. Видимо, когда редактировал свое сообщение, случайно удалил слова о том, что считать будет, но и повторы тоже выведет. Можно, например, создать массива типа bool, и в нем отмечать проверенные слова. Тип такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int cnt = 0; char* find;
bool *checked = new bool[Count]();
for (int i = 0; i < Count; i++)
{
    find = words[i];
    for (int j = 0; j < Count; j++)
        if (!checked[j] && strcmp(find, words[j]) == 0)
        {
            checked[j] = true;
            cnt++;
        }
    if (!checked[i])
        cout << find <<" -> "<< cnt <<endl;
    cnt = 0;
}
delete[] checked;
0
18 / 11 / 8
Регистрация: 07.09.2013
Сообщений: 63
24.11.2015, 17:39 5
а если использовать multiset?
0
Эксперт PHP
2988 / 2506 / 1182
Регистрация: 14.05.2014
Сообщений: 7,076
Записей в блоге: 1
24.11.2015, 17:48 6
Ascold, если будешь мой код пробовать, то в цикле на 3 строке Count замени на Count - 1, а на 6 - j = 0 на j = i + 1

Добавлено через 4 минуты
Цитата Сообщение от na1l Посмотреть сообщение
а если использовать multiset?
это, конечно, хорошо, но раз вместо std::string используются массивы char, то вряд ли человек знаком с std::multiset
0
1 / 1 / 3
Регистрация: 27.01.2015
Сообщений: 116
24.11.2015, 17:56  [ТС] 7
Проблема в том, что элементы массива checked соответствуют каждому элементу массива слов.
Поэтому получается вот это. Т.е для каждого элемента в массиве нет повторов.
0
Миниатюры
Как найти количество повторений слова в строке?  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2015, 17:56

Найти количество повторений слова в тексте
Розробити алгоритм і програму для визначення відсотка повторення заданого слова в тексті (як...

Найти количество повторений каждого слова и удалить дубликаты слов
В строке символов определить количество повторений каждого слова и удалить дубликаты слов. Слова...

В произвольном тексте найти повторяющиеся слова,определить количество повторений каждого из них
В произвольном тексте найти повторяющиеся слова,определить количество повторений каждого из них....

Найти в текстовом файле одинаковые слова и вывести количество повторений каждого в другой файл
Найти в текстовом файле одинаковые слова и вывести количество повторений каждого в другой файл....


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

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

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