Умножение матриц
Три продавца продают четыре вида товаров. Количество проданного товара сведено в таблицу A.
В таблице B представлены цена каждого товара и комиссионные (наценка), получаемые от продажи.
Вырученные от продажи деньги подсчитываются так:
1-й продавец: 5 * 20.30 + 3 * 18.60 + 7 * 12.10 + 0 * 23.00 = 242.00
2-й продавец: 7 * 20.30 + 1 * 18.60 + 9 * 12.10 + 2 * 23.00 = 315.60
3-й продавец: 3 * 20.30 + 4 * 18.60 + 7 * 12.10 + 6 * 23.00 = 358.00
А полученные комиссионные так:
1-й продавец: 5 * 1.60 + 3 * 1.30 + 7 * 1.00 + 0 * 1.80 = 18.90
2-й продавец: 7 * 1.60 + 1 * 1.30 + 9 * 1.00 + 2 * 1.80 = 25.10
3-й продавец: 3 * 1.60 + 4 * 1.30 + 7 * 1.00 + 6 * 1.80 = 27.80
Эти вычисления называются умножением матриц и записываются так, как представлено на рисунке выше. Число столбцов таблицы A должно совпадать с числом строк таблицы B. Результирующая таблица C имеет столько строк, сколько у A, и столько столбцов, сколько у B.
Следующая программа вводит матрицы A и B, перемножает их, затем выводит их произведение – матрицу C.
Программа на языке Паскаль:
type
atype = array[1..3,1..4] of integer;
btype = array[1..4,1..2] of real;
ctype = array[1..3,1..2] of real;
var
a: atype; b: btype; c: ctype;
n,i,j,k: integer;
begin
for n := 1 to 3 do
readln(a[n,1],a[n,2],a[n,3],a[n,4]);
for n := 1 to 4 do
readln(b[n,1],b[n,2]);
for i := 1 to 3 do
for j := 1 to 2 do begin
c[i,j] := 0;
for k := 1 to 4 do
c[i,j] := c[i,j] + a[i,k] * b[k,j];
end;
for n := 1 to 3 do
writeln(c[n,1]:8:2, c[n,2]:8:2);
end.