Форум программистов, компьютерный форум CyberForum.ru

Обработка строк. Проверить, есть ли в тексте повторяющиеся слова - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Twitosha
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 29
27.03.2013, 02:53     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова #1
Проверить, есть ли в тексте повторяющиеся слова.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 02:53     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова
Посмотрите здесь:

C++ В тексте слова, стоящие на четных местах, переписать задом наперед. В тексте несколько строк.
Проверить, есть ли в тексте повторяющиеся слова C++
Во введенном тексте найти повторяющиеся слова C++
Обработка строк. Поменять местами в предложении слова C++
C++ Заменить в тексте все слова, в которых есть хоть одна цифра, на звездочки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 88
27.03.2013, 11:15     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова #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
30
31
#include <string.h>
#include <stdio.h>
#include <malloc.h>
 
char text[256] ; 
char text1[256];
char seps[]   = " ,\t\n";
char *token;
//int it,i;
char *ptr;
 
void main( void )
{
   printf( "Input text(limit 255):"); scanf("%s", text);
    strcpy(text1,text);
   printf("\n%s",text);
 
   token = strtok( text, seps );
 
   while( token != NULL )
   {
    
      if( (ptr=strstr(text1,token)) != NULL && strstr(ptr,token) !=NULL ){ printf("\n Double word %s",token); break;}
 
      printf("\n%s",text);
 
      /* взять следующее слово */
      token = strtok( NULL, seps );
   }
 
}
alexcrz
3 / 3 / 1
Регистрация: 26.03.2013
Сообщений: 21
27.03.2013, 13:17     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова #3
ввожу:
oto moto oto moto fff oto

получаю:
oto
Double world oto
SDev
43 / 41 / 10
Регистрация: 15.03.2013
Сообщений: 88
28.03.2013, 04:22     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова #4
в данном случае программа нашла в тексте как минимум два повтора слова otto, сообщила об этом и завершила работу. я здесь не учел повтор слова, как часть другого: oto - moto. сейчас исправим.
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
#include <string.h>
#include <stdio.h>
#include <malloc.h>
#define MAXT 20  //максим. число слов
 
char text[256] ; 
char seps[]   = " ,\t\n";
char *token;
char *tokens[MAXT]; // массив слов
int it,i,f;
 
 
void main( void )
{
   printf( "Input text(limit 255):"); gets(text);
   
   printf("\nИсходный текст: %s",text);
   it=0; // счетчик найденных слов
   f=0;
   token = strtok( text, seps );
 
   while( token != NULL )
   {
    /* добавляем в массив найденных слов с проверкой */
     i=0;
     while( i < it )
     {
       if( strcmp(tokens[i],token) == 0 ) break;
        i++;
      }
 
     if( i == it )  // добавляем новое слово
    {
        if(it==MAXT){printf("\nв массиве нет места под слова"); break;}
 
        tokens[it]=(char*)malloc(strlen(token)+1);
        strcpy(tokens[it],token); 
        it++;
     }
     else { f=1; printf("\n Повтор слова: %s",token); break;} // нашли повтор слова - заканчиваем обработку
 
    
      /* взять следующее слово */
      token = strtok( NULL, seps );
   }
 
    if(f==0) printf("\nПовторов нет.");
 
    for(i=0; i < it ; i++) free(tokens[i]);
      
}
Проверено- работает. Находит первый повтор отдельного слова, сообщает и выходит.
Yandex
Объявления
28.03.2013, 04:22     Обработка строк. Проверить, есть ли в тексте повторяющиеся слова
Ответ Создать тему
Опции темы

Текущее время: 14:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru