Другие языки программирования и технологии
Помогите плиз!!Задача в Паскале
дан одномерный массив заполненный целыми числами.Найти 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;
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;
Отсортируй по убыванию, покажи 3 первых элемента.
Относительно большой оверхед, но с гарантией, и на маленьких массивах практически приближается к более оптимизированным.
Относительно большой оверхед, но с гарантией, и на маленьких массивах практически приближается к более оптимизированным.
Приступай к работе, поможем.
Сортировка в этом случае хреновый выход. Эта задача реализуется одним перебором с последовательным отсеиванием:
=========================================
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 или Агент.
=========================================
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 или Агент.
Похожие вопросы
- ПОМОГИТЕ С ЗАДАЧАМИ В ПАСКАЛЕ
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- ПОМОГИТЕ НАПИСАТЬ ЗАДАЧИ НА ПАСКАЛЕ
- Помогите написать задачи в паскале!!!!
- Помогите решить задачу в паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите с задачей на паскале
- кто может решить и кому не лень помогите с задачей по паскалю, сам плохо с двумерными массивами лажу