Добавил:
БГУИР ПОИТ Дистанционное Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ч1 ИПР2 В5 / ИПР2v2

.pas
Скачиваний:
1
Добавлен:
27.09.2021
Размер:
4.93 Кб
Скачать
program l2v2;
uses crt;
var
s, itog1, itog2, itog3, e, posl: string;
i, mp, z, x: integer;
b, b1, b2 :boolean;
BEGIN ClrScr;

{ввод строки}
write('Введите текст:');readln(s);

{удаление лишних пробелов в конце строки}
for i:=(length(s)) downto 1 do
if s[i]=' ' then delete(s, i,1)
else break;

{поиск последнего слова строки}
for i:=length(s) downto 1 do
if s[i]=' ' then
begin
posl:=copy(s,i+1,(length(s)-i)); {копируется последнее слово до пробела}
mp:=i; {место последнего пробела}
break;
end;

{Преобразовываем строку для п.1. Находим слова в строке, сравниваем с последним, проверяем на вхождение последней буквы}
e:=''; {e-вспомогательная строка для формирования слова }
for i:=1 to mp do {цикл выполняется с первого символа начальной строки до пробела перед последним словом}
begin
if (s[i] <>' ') then e:=e+s[i] {если проверяемый символ не является пробелом, добавляем его в слово}
else begin
b:=e<>posl; {сравниваем найденное слово с последним}
b1:=pos(e[length(e)], e) < length(e); {проверка вхождения последней буквы}
if b=true and b1=true then {если оба условия верны}
begin e:=concat(e, ' '); itog1:= concat(itog1, e); delete(e, 1, 255);end {добавляем слово в итоговую строку 'itog1' и стираем переменную е}
else delete(e, 1, 255); {иначе стираем переменную (слова без вхождения посл. буквы не выводятся)}
end;
end;

{если итоговая переменная не пуста, выводим ее значение, иначе выводим сообщение}
if itog1<>('') then
writeln('Строка 1: ',itog1) else writeln('Строка 1 пуста');

{выбираем слова для второй строки в соответствии с п.2.}
e:=''; {e-вспомогательная строка для формирования слова}
for z:=1 to mp do {цикл выполняется с первого символа начальной строки до пробела перед последним словом}

begin if (s[z] <>' ') then e:=e+s[z] else {если проверяемый символ не является пробелом, добавляем его в слово}
begin
if e=posl then delete(e, 1, 255); {если сформированное слово равно последнему, удаляем его}
b2:=e<>''; {слово не пустое}
b:=e<>posl; {слово не равно последнему}
b1:=pos('q', e) > 0; {наличие буквы q в слове}
if b=true and b1=true then {если есть буква q и слово не равно последнему}
begin

x:=0; {вспомогательная перем. для нахождения длины слова с учетом добавления буквы u после q}
for i:=1 to length(e) do
begin if e[i]='q' then x:=x+1;end;
x:=x+length(e); {увеличиваем длину слова на количество найденных букв q}

{пишем u после каждой буквы q}
for i:=1 to x do
begin if e[i]='q' then insert('u', e, i+1); end;

{записываем полученное слово в переменную itog2 и очищаем переменную со словом е}
itog2:=concat(e, '');delete(e, 1, 255);

end;
{если слово не равно последнему и не пусто, оставляем его в той же форме и добавляем в конце пробел}
if b =true and b2=true then e:=concat(e, ' ') else continue;

{формируем итоговую строку, стираем переменные e, itog2; для b, b1, b2 устанавливаем значение false }
itog3:=concat(itog3, itog2, e); delete(e, 1, 255); delete(itog2, 1, 255);b:=false;b1:=false;b2:=false;
end;
end;

{если итоговое количество символов во второй полученной строке более 0, выводим ее значение, иначе выводим сообщение}
if length(itog3)>0 then writeln('Строка 2: ', itog3) else writeln('Строка 2 пуста');
readln;
END.






Соседние файлы в папке Ч1 ИПР2 В5