Удалить из текста слова, в которых только три различные буквы - Pascal
Формулировка задачи:
Дан текст из слов, разделенных пробелами. Удалить из текста все слова, в которых только три различные буквы (например, дом, кара и т.д.). Если таких слов нет, выдать соответствующее сообщение
Решение задачи: «Удалить из текста слова, в которых только три различные буквы»
textual
Листинг программы
var s:string;
i,j:integer;
f:=false;
function i3(x:string):boolean;
var m:set of char;
i,k:byte;
begin
m:=[];k:=0;
for i:=1 to length(x) do
if not(x[i] in m) then begin inc(k); m:=m+[x[i]] end;
i3:=k=3
end;
begin
write('s = ');readln(s);s:=s+' ';
i:=1;f:=false;
while i<=length(s) do
begin
j:=i;
while s[j]<>' ' do inc(j);
if i3(copy(s,i,j-i)) then begin delete(s,i,j-i+1);f:=true end
else i:=j+1;
end;
if f then writeln(s)
else writeln('нет слов в которых только три различные буквы')
end.
Объяснение кода листинга программы
- Объявляется переменная
sтипа string для хранения вводимой строки. - Объявляются переменные
iиjтипа integer для использования в циклах и операциях над строками. - Объявляется переменная
fбез указания типа. Предполагается, что будет тип boolean. - Создается функция
i3для проверки строки на наличие только трех различных букв. - Внутри функции объявляются переменные
m- множество символов иk- переменная для подсчета количества различных букв в строке. - В основной части программы считывается ввод пользователя и добавляется пробел в конец строки
s. - Устанавливаются начальные значения переменных
iиf. - Выполняется цикл, идущий до конца введенной строки.
- В цикле находится границы отдельных слов.
- Проводится проверка слова на наличие только трех различных букв при помощи функции
i3, и в случае нахождения такого слова оно удаляется из строкиs. - Если было удалено хотя бы одно слово, выведется измененная строка. В противном случае будет выводиться сообщение о том, что в строке нет слов, удовлетворяющих условию.