Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата ViRTaCe:
В гугле море алгоритмов для нахождения подстроки, выбирайте любой. Думаю проверить кол-во вхождений и найти самую длинную не составит труда. »
Программа выглядит вот-так.
Код: Выделить весь код
#include <stdio.h>
#include <string.h>
#include <conio.h>
int HowMany(char string[], char word[]) {
    char *p = strstr(string, word);
    if(!p)
    return 0;
    return 1 + HowMany(p + strlen(word), word);
}
int HowMany(char *, char *);
int main()
{
    char string[200];
    gets(string);
    int maxLen = 0;
    int mn = 0;
    while(maxLen != 0 && mn < 2) {
                 char * pch = strtok (string," ");  // получаем первое слово
    char * word = 0; // самое длинное слово
 
    int length = strlen(pch);          // определяем длинну первого слова
 
    int maxLen = 0; // самое длинное слово
 
      while (pch != NULL)                         // пока есть слова
      {
          length = strlen(pch);        // определяем длинну слова
 
          if (maxLen < length )        // определяем самое длинное слово
          {
              maxLen = length;
              word = pch;              // сохраняем указатель на текущее слово
          }
 
          pch = strtok (NULL, " "); // получаем следующее слово
          }
          mn = HowMany(string, word);
          }
          printf("%d\n", mn);
 
      /*cout << "Самое длинное слово: " << word
           << " , его длина равна: " << maxLen
           << " символам " << endl;*/
           getch();
 return 0;
}
Как выбрать подстроку?

Отправлено: 11:29, 25-09-2013 | #3