Цитата
Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающие от максимального не более чем на 20 %, а потом– все остальные.
Что то такое
Код
program jjh;
const n=5;
B: array[1..n] of real = (2.5, -2.0, 1.5, 2.4, -15.45);
var A: array[1..n] of real;
max, bu: real;
i, j, k: byte;
function findmax(X:array of real): real;
var i,n: byte;
m: real;
begin
m:=X[1];
for i:=0 to high(X)-1 do
if X[i]>m then m:=X[i];
findmax:=m;
end;
function otl (m, r: real): boolean;
begin
if (abs(m-r)/m)*100>20 then
otl:=false
else
otl:=true;
end;
begin
max:=findmax(B);
writeln(max:5:2);
k:=0;
for i:=1 to n do
if not(otl(max ,B[i])) then
begin
inc(k);
A[k]:=B[i];
{bu:=B[i];
for j :=i downto k do
B[j]:=b[j-1];
b[k]:=bu;}
{B[j]:=B[j]+B[k];
B[k]:=B[j]-B[k];
B[j]:=B[j]-B[k];
inc(k);}
end;
for i:=1 to n do
if otl(max ,B[i]) then
begin
inc(k);
A[k]:=B[i];
end;
for i:=1 to n do
write(A[i]:7:2);
readln
end.
Не тестировал и не компелировал...