Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ одномерные массивы

Автор: Makcим 21.11.2006 23:08

Никак не разберусь с этой задачей. Помогите пожалуйста!!! unsure.gif
Дан массив x целых чисел. Вывести в порядке возрастания все числа, стоящие на четных местах и встречающиеся более двух раз.

Автор: klem4 21.11.2006 23:27

Вот как-то так:

const
n = 12;

type
TArray = array [1..n] of Integer;
TIdx = array [1..n div 2] of Integer;
...
procedure Sort(var arr: TArray);
var
idx: TIdx;
i, j, count, P, T: Integer;
begin

i := 2;
P := 0;

while (i <= n) do begin
count := 0;
j := 1;
while (j <= n) and (count < 2) do begin
if (i <> j) and (arr[i] = arr[j]) then inc(count);
inc(j);
end;
if count >= 2 then begin
inc(P);
idx[P] := i;
end;
inc(i, 2);
end;

for i := P downto 2 do
for j := 1 to i - 1 do
if arr[idx[j]] > arr[idx[j + 1]] then begin
T := arr[idx[j]];
arr[idx[j]] := arr[idx[j + 1]];
arr[idx[j + 1]] := T;
end;

end;