{
Рассортировать числа «горкой», то есть 1 минимальное на первое место,
2 минимальное на последнее место и т. д. Затем удалить максимальное
значение из данных.
}
program q179134;
var
a: array [0..99] of integer;
n,i,iMin,loc,left,right: integer;
min,temp: integer;
{ вывод n первых элементов массива на экран }
procedure printA( n: integer );
var i: integer;
begin
for i:=0 to n-1 do
write( a[i]:4 ); { 20 элементов в строке }
writeln;
end;
begin
write( 'Razmer massiva n=' );
readln( n );
{ заполняем массив случайными числами от 0 до 99 }
randomize;
for i:=0 to n-1 do
a[i]:=random(100);
writeln( 'Ishodnyj:' );
printA( n );
loc := 0; { текущая позиция для записи минимума }
left := 0; { левая граница несортированной части }
right := n-1; { правая граница несортированной части }
while left < right do begin { пока границы не сошлись в середине }
{ ищем минимум }
iMin := left;
min := a[left];
for i:=left+1 to right do
if a[i] < min then begin iMin := i; min := a[i]; end;
{ обмениваем значение a[loc] с минимальным }
temp := a[loc];
a[loc] := min;
a[iMin] := temp;
{ сдвигаем границы }
if loc < right then begin
loc := right;
inc( left );
end
else begin
loc := left;
dec( right );
end;
end;
writeln( 'Gorka:' );
printA( n );
{ здесь left=right, причем это индекс макс. элемента }
writeln( 'Max = ', a[left] );
{ удаляем максимальный элемент }
for i := left to n-2 do
a[i] := a[i+1];
dec(n);
printA( n );
write( 'Press [Enter] to exit...' );
readln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.