Другие языки программирования и технологии

Задачка по С++ в BORLARDC

Дан файл, содержащий текст на английском языке. В предложениях некоторые из слов записаны подряд несколько раз (Предложение заканчивается точкой или восклицательным знаком) . Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложение.

Нужна простая программа, без ООП.. .

Конкретно не могу разобраться как:
1) Считать по словам, сравнить соседние и удалить повтор.. .

Просто проболел учебу, и не могу теперь сам разобраться, помогите пожалуйста)
используем динамический стринглист для загрузки текста из файла, а далее используем в цикле свойства конкантенации строк и подсвойство сабстринг для определения повторяющихся слов, вот цитата из одной из книг Архангельского:
"Теперь попробуем повторить рассмотренный в предыдущем разделе поиск
в строке S1 фрагмента, заданного строкой S2, и замену его текстом строки S3.
Код, осуществляющий эти операции, может иметь вид:
AnsiString SI, S2, S3;
// операторы занесения текста в SI, S2, S3
int i = SI.Pos (S2);
if (i)
Labell->Caption = SI . Substring (1, i-1) -t- S3 +
SI.SubString(1+S2.Length(),255);
else Labell->Caption = "Текст не найден";
В этом коде использован ряд функций-элементов класса AnsiString: Pos,
Substring, Length. Обратите внимание на то, что доступ к ним осуществляется
операцией точка (.), вместо более привычной в C++Builder операции доступа к ме-
тодам компонентов стрелка (—>). Дело в том, что к методам компонентов доступ
осуществляется через указатель на объект, а в данном случае к методам Ansi-
String доступ осуществляется через сами объекты — строки.
Первый выполняемый оператор приведенного кода использует функцию Pos.
Эта функция ищет в строке, к которой она применена (в нашем случае в S1), первое
вхождение подстроки, заданной ее параметром (в нашем случае S2). Если поиск ус-
пешный, функция возвращает индекс первого символа найденного вхождения под-
строки. Индексы начинаются с 1. Если подстрока не найдена, возвращается 0.
Следующий оператор с помощью структуры if...else проверяет, не равно ли
нулю (false) возвращенное функцией Роз значение. Если не равно, то производится
формирование строки с заменой найденной подстроки. Строка формируется склеи-
ванием трех строк: начальной части строки S1, расположенной до найденного вхож-
дения подстроки, строки S3, заменяющей найденное вхождение, и заключительной
части строки S1, расположенной после найденного вхождения. Для получения
фрагментов строки S1 использована функция Substring. Эта функция возвращает
подстроку, начинающуюся с символа в позиции, заданной первым параметром
функции, и содержащую число символов, не превышающее значение, заданное вто-
рым параметром функции. Таким образом, выражение Sl.SubString(l, i — 1) воз-
вращает подстроку строки S1, начинающуюся с первого символа и содержащую
i - 1 символов, т. е. часть строки S1, расположенную до найденного вхождения под-
строки S2. Аналогично, выражение Sl.SubString(i + S2.Length(), 255) возвращает
подстроку строки S1, расположенную после найденного вхождения подстроки S2.
При этом для определения начала этой подстроки использована функция Length,
возвращающая число символов в строке (в нашем случае — в строке S2, содержа-
щей заменяемый фрагмент) . В приведенном выражении в качестве второго парамет-
ра функции Substring задано число 255, которое, как ожидается, превышает длину
подстроки. В действительности будет возвращено менее 255 символов, столько,
сколько имеется до завершающего S1 нулевого символа. "
Turym Mukanbetzhanov
Turym Mukanbetzhanov
6 654
Лучший ответ