var s,s1,s2,s3:string;{основная и три вспомогательные строки, так удобнее}
i,j,k:integer;
begin
k:=0;
repeat {проверяем правильность ввода строки}
write('s: ');
readln(s);
for i:=1 to length(s) do
if (s[1]=' ')or(s[length(s)]=' ')or(pos(' ',s)>0){чтобы не было пробела в начале, конце и 2х пробелов подряд}
then k:=1;
until k=0;
s:=s+' ';s1:='';s2:='';s3:='';{добавляем пробел в конец для удобства, обнуляем строки}
while pos(' ',s)>0 do {пока есть пробелы}
begin
s1:=copy(s,1,pos(' ',s)-1);{смотрим очередное слово}
k:=0;
for j:=1 to length(s1) do
if s1[j] in ['0'..'9'] then k:=k+1;{считаем в слове цифры}
if k=length(s1) then s2:=s2+' '+s1 {если все цифры, в первую строку}
else s3:=s3+' '+s1; {если нет, во вторую}
delete(s,1,pos(' ',s));{удаляем просмотренное слово}
end;
write(s2+s3); {складываем строки и выводим}
readln
end.
Следующий вариант
program words;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TStrArr = array of string;
function SplitStr(const sSrc,sDelimiter:string; lLimit:integer=-1; bWithEmpty:boolean=true):TStrArr;
var i,ni,cnt,dl:integer;
begin
dl := Length(sDelimiter);
SetLength(result,0);
if lLimit<=0 then lLimit := MaxInt;
cnt := 0;
i := 1;
repeat
inc(cnt);
SetLength(result,cnt);
ni := PosEx(sDelimiter, sSrc, i);
if (ni=i) and not bWithEmpty then begin
dec(cnt);
SetLength(result,cnt);
inc(i,dl);
end else if (ni=0)or(cnt=lLimit) then begin
result[cnt-1] := Copy(sSrc, i, MaxInt);
break;
end else begin
result[cnt-1] := Copy(sSrc, i, ni-i);
i := ni+dl;
end;
until false;
end;
function Join(const Arr:TStrArr; const sGlue:string; bSkipEmpty:boolean=false):string;
var i,L:Integer;
begin
result := '';
L := High(Arr);
i := 0;
while i<=L do begin
if not bSkipEmpty or (Arr[i]<>'') then begin
if i>0 then Insert(sGlue, result, Length(result)+1);
Insert(Arr[i], result, Length(result)+1);
end;
inc(i);
end;
end;
var s:string;
arr,arr2:TStrArr;
i,L:Integer;
begin
write('Input words: ');
readln(s);
arr := SplitStr(s,' ',-1,false);
L := Length(arr);
SetLength(arr2,0);
for i:=0 to L-1 do begin
if StrToInt64Def(arr[i],-1)>=0 then begin
SetLength(arr2,Length(arr2)+1);
arr2[High(arr2)] := arr[i];
arr[i] := '';
end;
end;
s := Join(arr2, ' ')+' '+Join(arr, ' ', true);
writeln('Result is: ',s);
readln;
end.