Другие языки программирования и технологии

Помогите плиз!!Задача в Паскале

дан одномерный массив заполненный целыми числами.Найти 3 максимальных элемента.Найти 3 максимальных элемента.Помогите плиз!
Судя по условию, это школьная задача, и, следовательно, учитель ожидает от учеников именно сортировки по убыванию и вывод первых трёх элементов. Но можно обойтись всего тремя поисками максимумов с заменой найденного на предыдущем шаге максимального элемента заведомо минимальным значением.

program N52710943;
const n=10;
var a:array[1..n] of integer;
i,j,max:integer;
begin
randomize;
writeln('Иcxoдный мaccив: ');
for i:=1 to n do
begin
a[ i ]:=random(101)-50;
write(a[ i ]:5);
end;
writeln;
writeln('3 мaкcимaльныx элeмeнтa:');
for i:=1 to 3 do
begin
max:=1;
for j:=2 to n do
if a[ j ] > a[ max] then max:=j;
write(a[ max]:5);
a[ max]:=-32768;
end;
readln;
end;
A*
Ale_X ***
51 590
Лучший ответ
Отсортируй по убыванию, покажи 3 первых элемента.
Относительно большой оверхед, но с гарантией, и на маленьких массивах практически приближается к более оптимизированным.
Приступай к работе, поможем.
Данияр ******
Данияр ******
32 502
Сортировка в этом случае хреновый выход. Эта задача реализуется одним перебором с последовательным отсеиванием:
=========================================
program Max3;

const
n = 10;

var
Max1Val: Integer;
Max1Ind: Integer;
Max2Val: Integer;
Max2Ind: Integer;
Max3Val: Integer;
Max3Ind: Integer;
Mass: array [0 .. n - 1] of Integer;
i: Integer;

begin
Write('Rand array: ');
Randomize;
for i := 0 to n - 1 do
begin
Mass[ i ] := Random(100);
Write(Mass[ i ], ' ');
end;
Max1Val := Mass[0];
Max1Ind := 0;
Max2Val := Mass[0];
Max2Ind := 0;
Max3Val := Mass[0];
Max3Ind := 0;
WriteLn;
for i := 0 to n - 1 do
begin
if Mass[ i ] >= Max3Val then
begin
Max3Val := Mass[ i ];
Max3Ind := i;
Continue;
end;
if Mass[ i ] >= Max2Val then
begin
Max2Val := Mass[ i ];
Max2Ind := i;
Continue;
end;
if Mass[ i ] >= Max1Val then
begin
Max1Val := Mass[ i ];
Max1Ind := i;
Continue;
end;
end;
WriteLn('Max1 = ', Max1Val, ', on index = ', Max1Ind);
WriteLn('Max2 = ', Max2Val, ', on index = ', Max2Ind);
WriteLn('Max3 = ', Max3Val, ', on index = ', Max3Ind);
ReadLn;
end.
=========================================
Если что, ICQ: 228004347 или Агент.
Sacha Dorzhiev
Sacha Dorzhiev
7 465