Ну вот так можно... Правда не очень рационально, но зато без дополнительных массивов и файлов...
Исходный код
const
n = 8;
arr: array[1 .. n] of integer =
(1, 2, 3, 4, 5, 6, 7, 8);
var
f: file of integer;
function good: boolean;
var
x: integer;
res: boolean;
begin
reset(f);
repeat
read(f, x)
until odd(x);
res := true;
while (not eof(f)) and res do
begin
read(f, x);
res := res and odd(x)
end;
good := res
end;
procedure change;
var x, T: integer;
begin
reset(f);
repeat
read(f, x);
until odd(x);
T := x;
while not eof(f) do
begin
read(f, x);
seek(f, filepos(f) - 2);
write(f, x);
seek(f, filepos(f) + 1);
end;
seek(f, filesize(f) - 1);
write(f, T);
end;
var
i: integer;
x: integer;
f_read, f_write: longint;
begin
assign(f, 'test.ttt');
rewrite(f);
for i := 1 to n do
write(f, arr[i]);
{ check }
writeln('before sorting:');
reset(f);
while not eof(f) do
begin
read(f, x);
write(x:5)
end;
writeln;
while not good do
change;
{ check it: }
writeln('after sorting:');
reset(f);
while not eof(f) do
begin
read(f, x);
write(x:5)
end;
writeln;
close(f)
end.