Вот, посмотри. Побыстрому написал:
| Код | char *filtering (char *inStr) { char *newStr= new char [strlen (inStr) + 1]; // Итоговая (результирующая) строка char *bufStr= new char [strlen (inStr) + 1]; // Буфер обмена (хранение текущего слова) *newStr= '\0'; // "Обнуляем" результирующую строку newStr int index= 0; // Индекс текщей позиции в буфере while (true) { if (*inStr == ' ' || *inStr == ',' || *inStr == '.' || *inStr == '\0') // Понятно, что ищем разделители слов { bufStr[index]= '\0'; // "Замыкаем" буфер обмена int lengthBufStr= strlen (bufStr); // Определяем длинну буфера (в символах :-) bool blQuit= false; // Флаг в true будет знаминовать положительный выход из поиска int i, j; // Две привычные переменные помогают реализовать цикл в привычном виде :-) for (i= 0; i < lengthBufStr; i++) // Начинаем поиск (поиск осуществляеися в строке содержащейся в буфере обмена) { for (j= i + 1; j < lengthBufStr; j++) // Поиснять, я думаю, не надо (это стандартный поиск) { if (bufStr[i] == bufStr[j]) // Как только находим одинаковые символы { strcat (newStr, bufStr); // Буфер обмена копируем в результирующую строку strcat (newStr, " "); // Это, как видно, просто разделитель blQuit= true; // Указываем, что необходимое найдено и можно завершить поиск break; // Выходим из текущего цикла } } if (blQuit) // В том случае если поиск дал положительный результат,то просто выходим из тикущего цикла { break; } } while (*inStr == ' ' || *inStr == ',' || *inStr == '.') // Просто пропускаем разделители слов { *inStr++; } index= 0; // Сбрасываем индекс текщей позиции в буфере } if (*inStr == '\0') // Ну, это для выхода { break; } bufStr[index++]= *inStr++; // Копируем текущей символ входной строки в буфер } delete bufStr; return newStr; }
|
|