String51. Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в алфавитном порядке.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
program String51; var S:String; SA : array [1..225] of String; i,i2,Len,Len2,poz:integer; procedure SwapString(var S1,S2:String); var STemp:String; begin STemp:=S1; S1:=S2; S2:=STemp; end; Function CompareString(S1,S2:string):boolean; begin if S1<S2 then CompareString:=true else CompareString:=false; end; begin Write('S: '); Readln(S); //наполняю массив словами Len:=0; poz:=pos(' ',S); While (poz<>0) do begin if poz=1 then delete(S,1,1); if poz>1 then begin inc(Len); SA[Len]:=copy(S,1,poz-1); Delete(S,1,poz); end; poz:=pos(' ',S); end; inc(Len); SA[Len]:=S; //получился массив SA длинной len. //сортирую массив Len2:=Len; for i:=1 to Len-1 do begin i2:=1; Len2:=Len2-1; while (i2<=Len2) do begin if not(CompareString(SA[i2],SA[i2+1])) then SwapString(SA[i2],SA[i2+1]); inc(i2); end; end; //складываю массив в строку S:=SA[1]; for i:=2 to Len do S:=S+' '+SA[i]; //вывожу массив Writeln(S); end. |
Другие задачи из раздела String можно посмотреть здесь.
Комментарии:
Комментарии 1