Главная » 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 |
|