Ввести строку текста Может быть...

Ввести строку текста. Может быть пустая строка или из одних пробелов. Разделители: пробел ,/#?.:”!’*. Слово- любая последовательность символов, ограниченная с одной или двух сторон разделителями. Продублировать рядом в строке слова, являющиеся анаграммой последнего слова. Проверку на анаграмму оформить как функцию

Лучший ответ по мнению автора

К сожалению, вы не указали язык программирования. На всякий случай вот вам на паскале.

program z1;

uses crt;

var S,S0:string;

    st:array [1..20] of string;

    i,m,k:integer;

const razd:set of char=[' ', '/','#','?','.',',','"','''','!'];

function proverka(s1,s2:string):boolean;

var j,n: integer;

    f: boolean;

begin

 f:=true;

 n:=length(s1);

 if length(s2)<>n then f:=false

                  else for j:=1 to n do if s1[j]<>s2[n-j+1] then f:=false;

 proverka:=f;

end;

 

Begin

 clrscr;

 write('Предложение: ') ;

 readln(S);

 m:=length(S);

 k:=0;

 i:=1;

 repeat

  S0:='';

  while (S[i] in razd) and (i<=m) do i:=i+1;

  while not(S[i] in razd) and (i<=m) do begin S0:=S0+S[i]; i:=i+1; end;

  if S0<>'' then begin k:=k+1; st[k]:=S0; S0:=''; end;

 until i>=m;

 if S0<>'' then begin k:=k+1; st[k]:=S0; S0:=''; end;

 if k>0 then writeln('Найдено ', k, ' слов') else writeln('Слов не найдено.');

 writeln('Aнаграммы: ');

 for i:=1 to k do if proverka(st[i],st[k]) then writeln(st[i]);

 readkey;

End.

Если подошло — прошу отметить. если нужен другой язык программирования — обращайтесь. Но суть программы такая же будет. 

25.01.13
Лучший ответ по мнению автора

Елена Васильевна

Сейчас на сайте
Читать ответы

Виктор Щебетун

Читать ответы

Карина

Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store