Программа
program Matrix(input,output);
{ Поиск min и max элементов в
двух матрицах }
const Max=19; { максимальное количество строк и
столбцов в матрицах (возможное) }
type MatrixType=array [1..Max,1..Max] of real; { описание типа "матрица" }
var A,B:MatrixType; { матрицы }
M,N:integer; { число строк и столбцов (заданное) }
function InputMax(S:string;Max:integer):integer;
{ функция определения числа столбцов и строк матриц }
var b:integer; { переменная для ввода и анализа корректности введенного
числа строк и столбцов матриц }
begin
repeat { цикл ввода }
writeln; { пропуск строки }
write('Введите число ',S,' матрицы [1.. ',Max,'] ');
{ приглашение ввести число строк или столбцов матрицы }
readln(b); { ввод числа строк или столбцов }
if not (b in [1..Max])
then writeln('Введенное число находится вне допустимого диапазона')
{ анализ корректности введенного числа и ссобщение об ошибке }
until b in [1..Max]; { выход из цикла при получении корректного значения }
InputMax:=b { определение значения функции }
end;
procedure InputMatrix(var MatrixVar:MatrixType;M,N:integer);
{ процедура ввода матрицы }
var i,k:integer; { переменные для организации циклов }
begin
for i:=1 to M do { цикл ввода строк }
for k:=1 to N do { цикл ввода столбцов }
begin
write('Введите элемент матрицы [',i,',',k,'] ');
{ приглашение ввести элемент матрицы }
readln(MatrixVar[i,k]) { ввод элемента матрицы }
end
end;
procedure FindWrite(S:string;var MatrixVar:MatrixType;M,N:integer);
{ процедура поиска и вывода наибольшего и наименьшего элементов матрицы }
var i,k:integer; { переменные для организации циклов }
iNumberMax,kNumberMax,iNumberMin,kNumberMin:integer;
{ номера строк и столбцов наибольшего и наименьшего элементов }
ElementMax,ElementMin:real;{ наибольший и наименьший элементы }
begin
ElementMax:=MatrixVar[1,1]; { определение начального значения
наибольшего элемента }
iNumberMax:=1; { определение начального значения
строки наибольшего элемента }
kNumberMax:=1; { определение начального значения
столбца наибольшего элемента }
ElementMin:=MatrixVar[1,1]; { определение начального значения
наименьшего элемента }
iNumberMin:=1; { определение начального значения
строки наименьшего элемента }
kNumberMin:=1; { определение начального значения
столбца наименьшего элемента }
for i:=1 to M do { цикл просмотра строк }
for k:=1 to N do { цикл просмотра столбцов }
begin
if MatrixVar[i,k]>ElementMax { если текущий элемент матрицы больше
максимального из просмотренных }
then { то }
begin
ElementMax:=MatrixVar[i,k]; { переопределение наибольшего
элемента матрицы }
iNumberMax:=i; { переопределение номера строки
наибольшего элемента матрицы }
kNumberMax:=k { переопределение номера столбца
наибольшего элемента матрицы }
end;
if MatrixVar[i,k]<ElementMin { если текущий элемент матрицы меньше
минимального из просмотренных }
then { то }
begin
ElementMin:=MatrixVar[i,k]; { переопределение наименьшего
элемента матрицы }
iNumberMin:=i; { переопределение номера строки
наименьшего элемента матрицы }
kNumberMin:=k { переопределение номера столбца
наименьшего элемента матрицы }
end
end;
writeln('Максимальный элемент матрицы ',S,'[',iNumberMax,',',kNumberMax,
']=',ElementMax); { Вывод максимального элемента матрицы }
writeln('Минимальный элемент матрицы ',S,'[',iNumberMin,',',kNumberMin,
']=',ElementMin) { Вывод минимального элемента матрицы }
end;
begin
M:=InputMax('строк',Max); { определение числа строк }
N:=InputMax('столбцов',Max); { определение числа столбцов }
writeln('Ввод матрицы A:'); { приглашение ввести матрицу A }
InputMatrix(A,M,N); { ввод матрицы A размерностью M*N }
writeln('Ввод матрицы B:'); { приглашение ввести матрицу B }
InputMatrix(B,M,N); { ввод матрицы B размерностью M*N }
FindWrite('A',A,M,N); { Поиск максимального и минимального для матрицы A
и вывод результата }
FindWrite('B',B,M,N); { Поиск максимального и минимального для матрицы B
и вывод результата }
end.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию