Отсортировать массив, отбрасывая при этом все повторяющиеся элементы- Pascal(Паскаль)

uses crt;
var x,y:array[1..100] of integer;
    m,i,j,imn,p,q,t:byte;
    b:integer;
begin
clrscr;
randomize;
write('m=');readln(m);
writeln('Массив Х:');
for i:=1 to m do
 begin
  x[i]:=random(20);
  write(x[i],' ');
 end;
writeln;
writeln;
i:=1;
while i<=m do
 begin
  imn:=i;{мин текущее число}
  for j:=i+1 to m do
  if x[j]<x[imn] then imn:=j;{нашли меньше, оно мин}
  b:=x[imn];{запомнили}
  for p:=imn downto i+1 do{сдвиг вправо к минимальному}
  x[p]:=x[p-1];
  x[i]:=b;{переносим мин. вперед на свое место}
  q:=i+1;
  while q<=m do
  if x[q]=b then {ищем равные минимуму}
   begin
    for t:=q to m-1 do
    x[t]:=x[t+1]; {удаляем их путем сдвига влево}
    m:=m-1;{уменьшаем размер исходного массива}
   end
  else q:=q+1;
  i:=i+1;
 end;
writeln('Массив X:');
for i:=1 to m do
write(x[i],' ');
readln
end.

Leave a Comment

53 − = 45