Найти все самые нижние максимальные элементы по столбцам матрицы - PascalABC.NET
Формулировка задачи:
Дана матрица размерностью NM, состоящая из натуральных чисел. Найти все
самые нижние максимальные элементы по столбцам и вывести их значение и
местоположение на экран (оформить в виде процедуры). Вычислить среднее
арифметическое элементов нижней строки (оформить в виде функции). Записать в
текстовый файл элементы нижней строки
Решение задачи: «Найти все самые нижние максимальные элементы по столбцам матрицы»
textual
Листинг программы
type mtr=array[,]of integer;
procedure max(a:mtr;n,m:integer);
var i,j,mx,imx:integer;
begin
writeln('Последние максимальные столбцов');
for j:=0 to m-1 do
begin
mx:=a[0,j];
imx:=1;
for i:=0 to n-1 do
if a[i,j]>=mx then
begin
mx:=a[i,j];
imx:=i+1;
end;
writeln('положение=[',imx,',',j+1,'] значение=',mx);
end;
end;
function sred(a:mtr;n,m:integer):real;
var j:integer;
begin
result:=0;
for j:=0 to m-1 do
result:=result+a[n-1,j];
result:=result/m;
end;
var a:mtr;
m,n,i,j:integer;
f:text;
begin
randomize;
writeln('Введите размеры матрицы');
readln(n,m);
setlength(a,n,m);
for i:=0 to n-1 do
begin
for j:=0 to m-1 do
begin
a[i,j]:=random(6);
write(a[i,j]:3);
end;
writeln;
end;
max(a,n,m);
writeln('Среднее арифметическое последней строки=',sred(a,n,m):0:2);
assign(f,'stroka.txt');
rewrite(f);
for j:=0 to m-1 do
write(f,a[n-1,j]:3);
writeln('Последняя строка матрицы записана в файл stroka.txt');
close(f);
end.
Объяснение кода листинга программы
- Тип переменной
mtrобъявлен как массивarray[,]of integer, который представляет собой двумерный массив целых чисел. - В процедуре
maxперебираются все элементы матрицы, начиная с первого столбца, и ищутся максимальные значения в каждом столбце. - Переменная
mxинициализируется значением первого элемента первого столбца, а переменнаяimxинициализируется значением 1. - Переменная
imxхранит позицию последнего найденного максимального элемента. - Переменная
mxобновляется, если текущий элемент больше текущего максимального значения. - Переменная
imxобновляется, если текущий элемент имеет большее максимальное значение. - После завершения цикла, выводится сообщение с положением и значением последнего максимального элемента.
- В функции
sredперебираются все элементы последнего столбца матрицы и суммируются. - Результат делится на количество элементов, чтобы получить среднее арифметическое.
- Переменная
fобъявлена как текстовый файл, который будет использоваться для записи последней строки матрицы. - В цикле перебираются все элементы последнего столбца матрицы и записываются в файл.
- После завершения цикла, выводится сообщение о том, что последняя строка матрицы записана в файл
stroka.txt. - Файл
fзакрывается с помощью функцииclose.