В матрице определить три элемента с наибольшими значениями - Turbo Pascal
Формулировка задачи:
В произвольно заданном двумерном массиве размера 6×3 определить три элемента с наибольшими значениями.
Есть программа, но она пропускает наибольшее значение и выводит следующее после него. Подскажите в чем ошибка?
Решение задачи: «В матрице определить три элемента с наибольшими значениями»
textual
Листинг программы
const n=6;
m=3;
var a:array [1..n,1..m] of integer;
i,j,max1,max2,max3:integer;
begin
randomize;
writeln(' ');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(100);
write(a[i,j]:3);
end;
writeln;
end;
max1:=a[1,1];
max2:=a[1,1];
max3:=a[1,1];
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max1 then
begin
max3:=max2;
max2:=max1;
max1:=a[i,j]
end
else if a[i,j]>max2 then
begin
max3:=max2;
max2:=a[i,j];
end
else if a[i,j]>max3 then max3:=a[i,j];
writeln ('max1=',max1);
writeln ('max2=',max2);
writeln ('max3=',max3);
end.
Объяснение кода листинга программы
- Переменная
nинициализируется значением 6. - Переменная
mинициализируется значением 3. - Создается переменная
a, которая представляет собой массив целых чисел размером от 1 доnна 1 доm. - Создаются три переменные
i,jиmax1, которые будут использоваться для поиска максимального значения в матрице. - Выполняется цикл
for, который проходит по каждому элементу массиваa. - Внутри первого цикла
forвыполняется второй циклfor, который проходит по каждому элементу массиваaвторого измерения. - В каждой итерации второго цикла
forприсваивается значение случайного числа от 1 до 100 элементу массиваaсоответствующего индекса. - Значение каждого элемента выводится на экран.
- После окончания второго цикла
forвыполняется первый циклfor, который обновляет максимальные значенияmax1,max2иmax3. - Если текущий элемент массива
aбольшеmax1, тоmax3устанавливается равнымmax2,max2устанавливается равнымmax1, аmax1устанавливается равным текущему элементу. - Если текущий элемент массива
aбольшеmax2, тоmax3устанавливается равнымmax2, аmax2устанавливается равным текущему элементу. - Если текущий элемент массива
aбольшеmax3, тоmax3устанавливается равным текущему элементу. - Выводится сообщение с максимальными значениями
max1,max2иmax3. - Конец программы.