(pascal)для текста состоящего из слов , разделенных пробелами , выполнить : 1)поиск симметричных слов перевертышей. 2) поиск слов не имеющих повторяющихся букв. , надо
Var s,s1,s2,st1,st2:string; i:integer; mn:set of char; b:boolean; begin writeln('Введите текст:'); readln(s); s:=s+' '; st1:=''; st2:=''; s1:=''; s2:=''; mn:=[]; b:=false; while pos(' ',s)>0 do delete(s,pos(' ',s),1); for i:=1 to length(s) do if s[i]<>' ' then begin s1:=s[i]+s1; s2:=s2+s[i]; if s[i] in mn then b:=true; mn:=mn+[s[i]]; end else begin if s1=s2 then st1:=st1+s1+' '; if not b then st2:=st2+s2+' '; s1:=''; s2:=''; mn:=[]; b:=false; end; if st1<>'' then writeln('Слова-перевёртыши: ',st1) else writeln('Слов-перевёртышей нет'); if st2<>'' then writeln('Слова без повторяющихся букв: ',st2) else writeln('Слов без повторяющихся букв нет'); end.
Пример: Введите текст: заказ слово комок пробел след пример огонь текст Слова-перевёртыши: заказ комок Слова без повторяющихся букв: пробел след
s,s1,s2,st1,st2:string; i:integer;
mn:set of char; b:boolean;
begin
writeln('Введите текст:');
readln(s);
s:=s+' ';
st1:=''; st2:='';
s1:=''; s2:=''; mn:=[]; b:=false;
while pos(' ',s)>0 do delete(s,pos(' ',s),1);
for i:=1 to length(s) do
if s[i]<>' '
then begin
s1:=s[i]+s1;
s2:=s2+s[i];
if s[i] in mn then b:=true;
mn:=mn+[s[i]];
end
else begin
if s1=s2 then st1:=st1+s1+' ';
if not b then st2:=st2+s2+' ';
s1:=''; s2:=''; mn:=[]; b:=false;
end;
if st1<>''
then writeln('Слова-перевёртыши: ',st1)
else writeln('Слов-перевёртышей нет');
if st2<>''
then writeln('Слова без повторяющихся букв: ',st2)
else writeln('Слов без повторяющихся букв нет');
end.
Пример:
Введите текст:
заказ слово комок пробел след пример огонь текст
Слова-перевёртыши: заказ комок
Слова без повторяющихся букв: пробел след
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadlnString('>').ToWords;
a.Where(w->w=w.Inverse).Println;
a.Where(w->w.Distinct.Count=w.Length).Println;
end.
Пример
> Наша хата не кабак кто не в хате тот чудак
кабак в тот
не кто не в хате чудак