Написать программу, вычисляющую произведение двух матриц произвольной размерности. Элементы матриц вводятся с клавиатуры в компонент StringGrid. Предусмотреть возможность ввода с клавиатуры количества строк и столбцов заданных матриц.
Ответы
Ответ:
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k, n, m, p: Integer;
A, B, C: array of array of Integer;
begin
// запрос количества строк и столбцов матриц
n := StrToInt(Edit1.Text);
m := StrToInt(Edit2.Text);
p := StrToInt(Edit3.Text);
// создание матриц A и B, заполнение элементами из StringGrid
SetLength(A, n, m);
SetLength(B, m, p);
for i := 0 to n-1 do
for j := 0 to m-1 do
A[i][j] := StrToInt(StringGrid1.Cells[j, i]);
for i := 0 to m-1 do
for j := 0 to p-1 do
B[i][j] := StrToInt(StringGrid2.Cells[j, i]);
// создание матрицы C для результата умножения
SetLength(C, n, p);
// умножение матриц A и B, запись результата в C
for i := 0 to n-1 do
for j := 0 to p-1 do
begin
C[i][j] := 0;
for k := 0 to m-1 do
C[i][j] := C[i][j] + A[i][k] * B[k][j];