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