Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
#1

Найти повторения слов в строке - C++

05.11.2013, 19:15. Просмотров 1405. Ответов 2
Метки нет (Все метки)

Нужно найти повторяющиеся слова и вывести "слово - количество повторов"
Например, строка "abc abc cba"
"abc - 2"
"cba -1"
Проблема в том, что как проверить несколько слов?
Попытался вызывать функцию, если еще остались символы кроме пробелов, вылетает ошибка
"Unhandled exception at 0x77c915ee in (lect5)strrepeat.exe: 0xC0000005: Access violation reading location 0x002e011d."
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
void words(char *str)
{
    char word[10];
    for(int i = 0;i<9; i++)
        word[i] = ' ';
    word[9] = '\0';
    //начало первого слова
    int numb= 0;
    while(str[numb] == ' ') numb++; 
    //копируем первое слово и заменяем на пробелы
    for(int i = 0; str[numb] !=  ' '; i++, numb++){
        word[i] = str[numb];
        str[numb] = ' ';
        word[i+1] = '\0';
        }    
    //ищем совпадения,считаем их и заменяем на пробелы 
    int counter = 1;
    char *p;
    p = strstr(str, word);
    while(p){
        counter++;
        for (int i =0; p[i] != ' '; i++)
            p[i] = ' ';
        p = strstr(str, word);
    }
    // выводим результат
    for(int i = 0; word[i] != '\0'; i++)
        printf("%c",word[i]);
    printf("- %d\n", counter);
    //проверяем, чтобы остались пробелы
    //не разрешает вызвать words(str)
    //из-за этого невозможно проверить на повторения больше 1 слова
    for(int i = 0; str[i]!= '\0';i++){
        if(str[i]!= ' '){
            words(str);
            break;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2013, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти повторения слов в строке (C++):

как подсчитать повторения слов в введенной строке? - C++
как подсчитать в введенном с клавы тексте, количество всех слов? Вобшем, составит программу, которая запрашивает ввести текст и...

Создать список слов из файла и подсчитать количество повторения этих слов - C++
Здравствуйте. Помогите написать такую программу: в файле храниться текст. Нужно составить список слов из этого текста и посчитать частоту...

Программа, подсчитывающая частоту повторения слов в тексте - C++
Разработать программу, подсчитывающую частоту повторения в тексте слов и печатающую слова в порядке уменьшения их частоты. Распечатать...

Найти количество слов в строке; найти самое длинное слово, заканчивающееся на заданную букву - C++
Дана строка текста, в которой слова разделены пробелами. Необходимо: - вычислить количество слов в строке; ...

Найти количества слов в строке - C++
Здравствуйте. Как найти число слов в строке string, при условии что слова могут разделяться несколькими пробелами?

Найти среднюю длину слов в строке - C++
Здравствуйте, необходима помощь с заданием. Дана строка текста, в которой слова разделены пробелами. Необходимо: 1. определить...

2
ПерС
375 / 291 / 90
Регистрация: 05.11.2013
Сообщений: 821
Записей в блоге: 5
Завершенные тесты: 1
05.11.2013, 19:35 #2
а ты разбери на слова нормально, в консольном C++ можно strtok'ом (пример из инета)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string.h>
#include <stdio.h>
#define BLANK_STRING ""
void main(void){
char *token, buf[81],*separators = "\t,. ";
int i;
puts("Вводите строки\n\
          Завершение - нажатие ENTER.\n");
while(strcmp(gets(buf),BLANK_STRING)!=0) {
 i = 0;
 token = strtok(buf, separators);
 while(token != NULL) {
  printf("Лексема %d - %s\n", i, token);
  token = strtok(NULL, separators);
  i++;
 }
}}
0
папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
05.11.2013, 21:33  [ТС] #3
Все равно непонятно, как рассчитывать повторения.
Создавать массив с токенами? а что дальше?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2013, 21:33
Привет! Вот еще темы с ответами:

Найти количество определенных слов в строке - C++
Хелп. Нужно написать программу, которая будет задавать строку и находить в ней количество определенных слов (например hello).

Найти количество одинаковых слов в строке - C++
#include &lt;iostream&gt; using namespace std; int main() { char str1 = &quot;to be or not to be&quot;; char* leks = strtok(str1, &quot; &quot;); ...

В строке с найти количество слов не содержащий подстроку - C++
В строке с найти количество слов не содержащий подстроку с2 вывести эти слова где с2=аб

В строке с найти количество слов заканчивающихся подстрокой с2 - C++
В строке с найти количество слов заканчивающихся подстрокой с2! Напишите пожалуйста простое решение.


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

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

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