program Pascal_162755;
var
arr,aptr,aptr2:^double;
p,max,tmp:double;
N,i:word;
begin
{ Вводим количество элементов }
Write('N=');ReadLn(N);
{ Выделяем память }
GetMem(arr,N*sizeof(double));
{ Вводим массив }
aptr:=arr;
for i := 1 to N do begin
Write('arr[',i,']=');ReadLn(aptr^);
Inc(aptr);
end;
{ Ищем произведение элементов после максимального }
aptr:=arr;
max:=aptr^;
p:=1;
Inc(aptr);
for i := 2 to N do begin
if aptr^>max then begin
max:=aptr^;
p:=1;
end else p:=p*aptr^;
Inc(aptr);
end;
WriteLn('P=',p);
{ Переставляем элеменьы согласно условия }
aptr:=arr;aptr2:=arr;Inc(aptr2,N-1);
while aptr<>aptr2 do begin
{ Ищем неправильно расположенные элементы }
while (aptr<>aptr2) and (abs(aptr^)<=1) do Inc(aptr);
while (aptr<>aptr2) and (abs(aptr2^)>1) do Dec(aptr2);
{ Переставляем их }
tmp:=aptr^;
aptr^:=aptr2^;
aptr2^:=tmp;
end;
{ Выводим получившийся массив }
WriteLn('Result array:');
aptr:=arr;
for i := 1 to N do begin
Write(aptr^:9,' ');
Inc(aptr);
end;
{ Освобождаем память }
FreeMem(arr);
ReadLn;
end.
N=10
arr[1]=3
arr[2]=0.7
arr[3]=-34
arr[4]=4
arr[5]=0.6
arr[6]=-0.8
arr[7]=45
arr[8]=2
arr[9]=0.7
arr[10]=1
P= 1.40000000000000E+0000
Result array:
1.0E+0000 7.0E-0001 7.0E-0001 -8.0E-0001 6.0E-0001 4.0E+0000 4.5E+0001 2.0E+0000 -3.4E+0001 3.0E+0000
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.