Я её вроде бы решил:
uses crt;
var a : array [1..1000] of Integer;
N,i : Integer;
min,max : Integer;
sec_min,sec_max : Integer;
a1_min,a1_max : Integer;
a1_sec_min,a1_sec_max : Integer;
a2_min,a2_max : Integer;
a2_sec_min,a2_sec_max : Integer;
a3_min,a3_max : Integer;
a3_sec_min,a3_sec_max : Integer;
a4_min,a4_max : Integer;
a4_sec_min,a4_sec_max : Integer;
begin
{$R+}
Clrscr;
Write('Input N:');
ReadLn(N);
Write('Input set N:');
for i := 1 to N do
Read(a[i]);
min := Maxint; sec_min := Maxint;
max := -32768; sec_max := -32768;
for i := 1 to N do begin
if (a[i] > 0) then begin
if (a[i] < min ) then begin
sec_min := min;
min :=a[i];
end
else if (a[i] < sec_min) and (a[i] <> min) then
sec_min := a[i];
if (a[i] > max) then begin
sec_max := max;
max := a[i];
end
else if (a[i] > sec_max) and (a[i] <> max) then
sec_max := a[i];
a1_min := min; a1_max := max;
a1_sec_min := sec_min; a1_sec_max := sec_max;
a2_min := min; a2_max := max;
a4_sec_min := min; a4_sec_max := max;
end;
end;
min := Maxint; sec_min := Maxint;
max := -32768; sec_max := -32768;
for i := 1 to N do begin
if (a[i] < 0) then begin
if (a[i] < min ) then begin
sec_min := min;
min :=a[i];
end
else if (a[i] < sec_min) and (a[i] <> min) then
sec_min := a[i];
if (a[i] > max) then begin
sec_max := max;
max := a[i];
end
else if (a[i] > sec_max) and (a[i] <> max) then
sec_max := a[i];
a3_min := max; a3_max := min;
a3_sec_min := sec_max; a3_sec_max := sec_min;
a2_sec_min := max; a2_sec_max := min;
a4_min := max; a4_max := min;
end;
end;
if (a2_min = 0) or (a2_sec_min = 0) then begin
a2_min := 0; a2_sec_min := 0;
end;
if (a2_max = 0) or (a4_sec_max = 0) then begin
a2_max := 0; a2_sec_max := 0;
end;
if (a4_min = 0) or (a4_sec_min = 0) then begin
a4_min := 0; a4_sec_min := 0;
end;
if (a4_max = 0) or (a4_sec_max = 0) then begin
a4_max := 0; a4_sec_max := 0;
end;
WriteLn;
WriteLn('--------------------------');
WriteLn('Nearest points info:');
WriteLn('I quarter nearest:',' (',a1_min,',',a1_sec_min,')');
WriteLn('II quarter nearest:',' (',a2_min,',',a2_sec_min,')');
WriteLn('III quarter nearest:',' (',a3_min,',',a3_sec_min,')');
WriteLn('IV quarter nearest:',' (',a4_min,',',a4_sec_min,')');
WriteLn('***************************');
WriteLn('Farthest points info:');
WriteLn('I quarter farthest:',' (',a1_max,',',a1_sec_max,')');
WriteLn('II quarter farthest:',' (',a2_max,',',a2_sec_max,')');
WriteLn('III quarter farthest:',' (',a3_max,',',a3_sec_max,')');
WriteLn('IV quarter farthest:',' (',a4_max,',',a4_sec_max,')');
WriteLn('----------------------------');
Readkey;
end.
Но у меня возникает вопрос если в задаче написано множество то какой тип использовать массив или множество, как будет правильней ? С множествами я пока еще не сделал ни одной задачи, так что мало пока в нем понимаю, поэтому использовал массив.