#include <iostream>
#include <ctype.h>
using namespace std;
int main()
{
int a;
char ch[1000];
cin.getline(ch,1000);
strcpy(ch,strupr(ch)); //Переведем в верхний регистр
char buffer[128]; //Введем буферную переменную
memset(buffer,0,128); //Обнулим ее
char *pStr = buffer; //Введем указатель на буферную перемнную
int Max = 0; //Текущий максимум вхождений слова
char Result[128]; //Результирующее слово
for (int i=0; i<=strlen(ch);i++) //Обойдем всю строку и ее заверщающий символ
{
if (isspace((unsigned char)ch[i]) || iscntrl((unsigned char)ch[i])) //Если разделитель и управляющий символ (в нашем случае завершающий) то
{ //usigned char - что бы русский язык понимали
int nMax = 0; //Введем промежуточный счетчик слов
char *ptrMax = ch; //Введем указатель на ch(искомую строку)
if (strlen(buffer)) //Длина буфера не нулевая (нулевой она может быть при подряд идущих разделителях
{
while (strstr(ptrMax,buffer)) //Пока есть входимость слова buffer(текущего) в строку на которую указывает ptrMax
{
ptrMax = strstr(ptrMax,buffer) + strlen(buffer); //Сдвиним указатель за первое вхождение buffer
nMax++; //Увеличим счетчик
}
if (nMax >= Max) //Сравним максимальное значение с текущим если больше либо равно перезапишим результат
{
Max = nMax;
strcpy(Result,buffer);
}
cout<<buffer<<" - "<<nMax<<endl; // Для отладки Слово - кол-во встречаимости
memset(buffer,0,128); //Обнулим буферную переменую
pStr = buffer; //Установим указатель на начало буфера
}
continue; //Выйдем из это итерации (продолжим цикл)
}
*pStr = ch[i]; //Посимвольно пишим символы в буфер из ch
pStr++; //Сдвиг указателя
}
cout<<"Result : '"<<Result<<"' this word in "<<Max<<" count";
}