Приветствую Вас Гость | RSS

Delphi заготовки

Понедельник, 13.05.2024, 10:42
Главная » 2012 » Май » 23 » Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию.
13:54
Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию.
{ЗАДАЧА 4

Преобразовать строку таким образом, чтобы буквы каждого слова в ней были отсортированы по возрастанию.

Определить какие слова встречаются в строке по одному разу.
}
uses crt;
type
  Tword=record
   word:string;
   col:integer;
 end;
 
var
   stext,s:string;
   s3,s2:string;
   im,i,y,start,x:Integer;
  WordList: array[1..100] of Tword;{список слов}
  WordListCount:integer; {список слов }



function SortStr(s:string):string;
var x,l,k:integer;
    s2:string;
    b,min:char;
begin
s2:=s;
l:=length(s2);
for x:=1 to l do begin
     min:=s2[x];
     for k:=x to l do
        if s2[k]<min then begin
           b:=s2[x];
           s2[x]:=s2[k];
           s2[k]:=b;
           min:=s2[x];
        end;
  end;
  SortStr:=s2;
  end;
 Procedure AddWord(word:string);
 var x:integer;
 begin
   for x:=1 to WordListCount do
   if wordlist[x].word=word then begin WordList[x].col:=WordList[x].col+1; exit; end;
   WordListCount:=WordListCount+1;
   WordList[WordListCount].word:=word;
   WordList[WordListCount].col:=1;

   
 end;
begin
clrscr;
stext:='преобразовать строку таким образом, (разу) чтобы буквы каждого слова в ней были отсортированы по возрастанию.'+#13+#10+
'Определить какие слова встречаются в строке по одному разу.';
s:=stext;
Writeln(s);
s2:='';
s3:='';
WordListCount:=0;
 for x:=1 to length(s) do begin
   if (s[x] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) and (x<>Length(s)) then begin {список символов из которых могут сосотоять слова}
   if s2='' then start:=x;
   s2:=s2+s[x];
   end
   else begin {если этот символ не из массива тех символов из которыйх могут состоять слова / значит это конец слова}
        if (s[x] in ['A'..'Z','a'..'z','А'..'Я','а'..'я','0'..'9']) then  {список символов из которых могут сосотоять слова}
        s2:=s2+s[x];
        if s2<>'' then begin
  //       if (pos(s2,copy(stext,1,start))=0) and (pos(s2,copy(stext,start+length(s2),length(s)))=0) then
//   writeln(s2);
         AddWord(s2);
         s3:=SortStr(s2);
        {переворачиваем слово }
        delete(s,start,length(s3)); {удаляем слово}
        insert(s3,s,start); {вставляем перевернутое слово}
        s2:='';
        end;
   end;
 end;
 writeln('-------------------------------');

 writeln(s);
 writeln('-------------------------------');
 writeln('Cлова встречаются в строке по одному разу ');
 for x:=1 to WordListCount do begin
   if wordlist[x].col=1 then writeln(WordList[x].word);
 end;
end.
Просмотров: 2097 | Добавил: NetSoftWare | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: