Предмет: Информатика,
автор: safamail
(Pascal)Для текста состоящего из слов , разделенных пробелами , выполнить :
1)поиск симметричных слов перевертышей.
2) поиск слов не имеющих повторяющихся букв.
Помогите пожалуйста , очень надо ...
Ответы
Автор ответа:
0
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.
Пример:
Введите текст:
заказ слово комок пробел след пример огонь текст
Слова-перевёртыши: заказ комок
Слова без повторяющихся букв: пробел след
Автор ответа:
0
// PascalABC.NET 3.2, сборка 1370 от 24.12.2016
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadlnString('>').ToWords;
a.Where(w->w=w.Inverse).Println;
a.Where(w->w.Distinct.Count=w.Length).Println;
end.
Пример
> Наша хата не кабак кто не в хате тот чудак
кабак в тот
не кто не в хате чудак
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadlnString('>').ToWords;
a.Where(w->w=w.Inverse).Println;
a.Where(w->w.Distinct.Count=w.Length).Println;
end.
Пример
> Наша хата не кабак кто не в хате тот чудак
кабак в тот
не кто не в хате чудак
Похожие вопросы
Предмет: Математика,
автор: Альбина2609
Предмет: География,
автор: dasistsecret
Предмет: Қазақ тiлi,
автор: aneltokiseva60
Предмет: Химия,
автор: dzhiyn