Цитата ViRTaCe:
В гугле море алгоритмов для нахождения подстроки, выбирайте любой. Думаю проверить кол-во вхождений и найти самую длинную не составит труда. »
|
Программа выглядит вот-так.
Код:
![Выделить весь код](images/misc/selectcode.png)
#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;
}
Как выбрать подстроку?