Const nx=30; var a:array[1..nx] of string; p,i,j,n,k:integer; s,d:string;begin s:='Дана строка символов состоящий из отдельных слов разделенных пробелом'; s:= s + ' Упорядочить слова по длине в убыванию и вывести на печать'; p:=1;while p>0 do begin i:= i + 1; p:= pos(' ',s); if p>0 then a[i]:=trim(copy(s,1,p)) else a[i]:=s;writeln(a[i]);Delete(s,1,p);end; for k:=1 to i do begin for j:=2 to i do begin if length(a[j-1]) < length(a[j]) then begin d:=a[j-1];a[j-1]:=a[j];a[j]:= d;end;end;end; writeln; for k:=1 to i do writeln(a[k]);end.
Answers & Comments
Verified answer
Const nx=30;var a:array[1..nx] of string; p,i,j,n,k:integer; s,d:string;begin
s:='Дана строка символов состоящий из отдельных слов разделенных пробелом';
s:= s + ' Упорядочить слова по длине в убыванию и вывести на печать';
p:=1;while p>0 do begin
i:= i + 1; p:= pos(' ',s);
if p>0 then a[i]:=trim(copy(s,1,p)) else a[i]:=s;writeln(a[i]);Delete(s,1,p);end;
for k:=1 to i do begin
for j:=2 to i do begin
if length(a[j-1]) < length(a[j]) then begin
d:=a[j-1];a[j-1]:=a[j];a[j]:= d;end;end;end;
writeln;
for k:=1 to i do
writeln(a[k]);end.