Найти max элементы в матрицах А и В (MaxA и MaxB соответственно) - Free Pascal
Формулировка задачи:
Найти max элементы в матрицах А и В (MaxA и MaxB соответственно). Если MaxA>MaxB, то вычислить C=A*B, иначе вычислить C=B*A. Вывести: А, В, А1, В1, S.
В4х4, где Вij={0, если i не равно j
1, иначе i=1..4, j=1..4
Решение задачи: «Найти max элементы в матрицах А и В (MaxA и MaxB соответственно)»
textual
Листинг программы
const n=4; type tarray=array[1..n,1..n] of integer; var a,b,c:tarray; i,j,max1,max2:integer; begin max1:=-999; randomize; writeln('massiv A'); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(18)-9; write(a[i,j],' '); if a[i,j]>max1 then max1:=a[i,j]; end; writeln; end; writeln('max1=',max1,''); writeln('massiv B'); for i:=1 to n do for j:=1 to n do b[i,j]:=0; for i:=1 to n do begin for j:=1 to n do begin if i=j then begin b[i,j]:=1; end; write(b[i,j],' '); max2:=1; end; writeln; end; writeln('max2=',max2,''); if max1=max2 then writeln('max1=max2') else begin if max1>max2 then begin writeln('max1>max2'); writeln('massiv C'); for i:=1 to n do begin for j:=1 to n do begin c[i,j]:=a[i,1]*b[1,j]+a[i,2]*b[2,j]+a[i,3]*b[3,j]+a[i,4]*b[4,j]; write(c[i,j],' '); end; writeln; end; end else begin writeln('max1<max2'); writeln('massiv C'); for i:=1 to n do begin for j:=1 to n do begin c[i,j]:=b[i,1]*a[1,j]+b[i,2]*a[2,j]+b[i,3]*a[3,j]+b[i,4]*a[4,j]; write(c[i,j],' '); end; writeln; end; end; end; readln; end.
Объяснение кода листинга программы
- В начале программы объявляются константы и переменные:
n
- размерность матрицы (4х4).tarray
- тип матрицы (массив размерности 1..n,1..n).a,b,c
- переменные этого типа.i,j,max1,max2
- целочисленные переменные для работы с циклами.
- Инициализация:
max1
устанавливается в-999
, чтобы начальное значение максимального элемента было некорректным.randomize
для инициализации генератора случайных чисел.writeln('massiv A')
- вывод заголовка для первой матрицы.for i:=1 to n do begin
- внешний цикл по строкам матрицы.for j:=1 to n do begin
- внутренний цикл по столбцам матрицы.a[i,j]:=random(18)-9;
- генерация случайного числа от -9 до 18 для элемента матрицы.write(a[i,j],' ');
- вывод элемента матрицы с пробелом после него.if a[i,j]>max1 then max1:=a[i,j];
- проверка, является ли текущий элемент максимальным и обновление значенияmax1
, если это так.end;
- выход из внутреннего цикла.writeln;
- переход на новую строку после вывода всех элементов строки.end;
- выход из внешнего цикла.writeln('max1=',max1,'');
- вывод значенияmax1
и завершающего символа.- Аналогично вышеуказанному алгоритму, обрабатывается вторая матрица
b
, но вместо случайных чисел используются единицы для элементов по диагонали. max2:=1;
- инициализацияmax2
единицей, так как все элементы матрицыb
равны единице.writeln('max2=',max2,'');
- вывод значенияmax2
и завершающего символа.- Если
max1
не равноmax2
, то выполняется одна из двух ветвей условного оператора: - Если
max1
большеmax2
, то выполняется первая ветвь: writeln('max1>max2');
- вывод сообщения о том, чтоmax1
большеmax2
.writeln('massiv C');
- вывод заголовка для третьей матрицы.for i:=1 to n do begin
- внешний цикл по строкам матрицы.for j:=1 to n do begin
- внутренний цикл по столбцам матрицы.c[i,j]:=a[i,1]*b[1,j]+a[i,2]*b[2,j]+a[i,3]*b[3,j]+a[i,4]*b[4,j];
- вычисление элемента третьей матрицы как сумма произведений соответствующих элементов первых двух матриц.write(c[i,j],' ');
- вывод элемента матрицы с пробелом после него.end;
- выход из внутреннего цикла.writeln;
- переход на новую строку после вывода всех элементов строки.end;
- выход из внешнего цикла.readln;
- чтение строки от пользователя для завершения программы.
- Ввод и вывод управляются функциями
readln
иwriteln
, которые обеспечивают корректный обмен данными между программой и пользователем.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д