Var s: string; // строка текста <span> i,lf: integer; // lf - номер первого символа отдельного слова в строке </span><span> // i - переменная цикла, для просмотра строки </span><span>begin </span><span> write('строка: '); readln(s); // считывание слова </span><span> i:=1; lf:=1; // i:=1; - текущий символ слова - первый </span><span> // lf:=1; - lf указывает на первый символ слова </span><span> repeat // цикл по строке </span><span> if s[i]=' ' then // если очередной символ строки - пробел, то </span><span> begin // начало блока операторов </span><span> if UpperCase(s[i-1])=UpperCase(s[lf]) then // если последний символ
текущего </span><span> // слова равен первому символу слова без учета регистра,
то </span><span> begin // начало блока операторов </span><span> delete(s,lf,i-lf+1); // удаляем слово вместе с пробелом справа </span><span> i:=lf; // i:=lf; - переменная i указывает на следующее слово </span><span> end // конец блока операторов </span><span> else lf:=i+1; // иначе, если первый символ слова не равен </span><span> // последнему символу слова, устанавливаем lf на </span><span> // первый символ следующего слова </span><span> end; // конец блока по условию, что очередной символ - пробел
</span><span> i:=i+1; // переходим к следующему символу в строке </span><span> until >length(s); // если номер очередного символа строки больше длины</span><span> // строки, то выход из цикла по строке </span><span> // если в последнем слове текста есть совпадения </span><span> // первого и последнего символа </span><span> if s[length(s)] in ['.','?','!'] then // если текст заканчивается одним из знаков .?!</span><span> </span><span> </span> if s[lf]=s[length(s)-1] then delete(s,lf-1,length(s)-lf+1) // сравниваем с предпоследним <span> // если равны, то удаляем последнее слово </span><span> else // иначе ничего не делаем </span><span> else if s[lf]=s[length(s)] then delete(s,lf-1,length(s)-lf+2); // если последний </span><span> // символ не .?!, то сравниваем первый символ последнего </span><span> // слова с последним символом текста, если равны, </span><span> // то удаляем последнее слово </span><span> writeln('новая строка: ',s); // выводим новую строку на экран </span><span>end. // конец программы
</span><span>строка: Это озеро около заповедника. </span><span>новая строка: Это заповедника.
</span>строка: Около этого заповедника находится озеро. <span>новая строка: этого заповедника находится.
</span>строка: озеро около заповедника <span>новая строка: заповедника