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

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

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

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

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
Лучший ответ по мнению автора

Еva

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