Написать программу для умножения матрицы на матрицу. Максимальное число строк и столбцов каждой матрицы: 50.
Элемент матрицы-результата, расположенный на I-й строке и J-м столбце, вычисляется так:
Program Umnoj2; Const Max=50; Var AA,BB,CC: array [1..Max,1..Max] of Double; {то есть место для матриц выделяем с запасом} ii,jj,kk,nn,mm,ll : integer; Summa: double; begin writeln ('Программа умножает матрицу A на матрицу B'); write('Введите число строк 1-й матрицы - A (<=50)--> ');readln(NN); write('Введите число столбцов 1-й матрицы - A (<=50)--> ');readln(KK); write('Введите число столбцов 2-й матрицы - B (<=50)--> ');readln(MM); writeln('Введите 1-ю матрицу (A):'); for ii:=1 to nn do for jj:=1 to kk do begin write('Введите A[',ii,',',jj,'] --> '); readln(AA[ii,jj]); end; writeln('Введите 2-ю матрицу (B):'); for ii:=1 to kk do for jj:=1 to mm do begin write('Введите B[',ii,',',jj,'] --> '); readln(BB[ii,jj]); end; {Вычисляем элементы матрицы-результата} for ii:=1 to nn do for jj:=1 to mm do begin Summa:= 0; for ll:= 1 to kk do Summa:= Summa + AA[ii,ll]*BB[ll,jj]; CC[ii,jj] := Summa; end; {Выводим матрицу-результат:} writeln('---- Результат: -----'); for ii:=1 to nn do begin for jj:=1 to mm do write(CC[ii,jj]:8:2); writeln; end; readln; end. ---- Результат: ---- 7 3 2 2 3 2 29 50 2 4 6 1 * 2 6 = 20 57 1 1 4 5 1 4 9 49 0 5 ----------
После изучения подпрограмм и указателей можно будет сделать эту программу более универсальной и увеличить максимальный размер матриц.