удалить из массива все максимальные элементы
паскаль

Ответы

Ответ дал: Аноним
0
const
  n = 50;

var
  a: array[1..n] of integer;

procedure ShiftRight(ip: integer);
// сдвигает к началу массива все элементы. расположенные за ip
var
  i: integer;
begin
  for i := ip to n - 1 do a[i] := a[i + 1];
  a[n] := -32768
end;

var
  i, j, mx, px: integer;

begin
  Randomize;
  writeln('Исходный массив');
  mx := -100;
  px := 0;
  for i := 1 to n do
  begin
    a[i] := Random(30) - 15;
    write(a[i]:4);
    if mx < a[i] then begin
      mx := a[i];
      px := i
    end
  end;
  writeln;
  writeln('Результирующий массив');
  if px = n then
    for i := 1 to n - 1 do writeln(a[i]:4)
  else
  begin
    for i := 1 to px - 1 do write(a[i]:4);
    ShiftRight(px);
    i := px;
    while (i <= n) and (a[i] <> -32768) do
      if a[i] < mx then
      begin
        write(a[i]:4);
        i := i + 1
      end
      else ShiftRight(i)
  end;
  writeln
end.

Тестовый пример:

Исходный массив
   1   2 -13   0  -2  14 -15   4  -6  -3  14   4 -10  -7  -5  11  -1 -10   9 -10 -12  14   4  -9  -5 -14   9  -9   9   5   3 -10 -15  -3   4 -14 -10   7   1 -11  -8 -15   5  -6   9  -3   9 -14  -3   1
Результирующий массив
   1   2 -13   0  -2 -15   4  -6  -3   4 -10  -7  -5  11  -1 -10   9 -10 -12   4  -9  -5 -14   9  -9   9   5   3 -10 -15  -3   4 -14 -10   7   1 -11  -8 -15   5  -6   9  -3   9 -14  -3   1



Вас заинтересует