// PascalABC.NET 3.3, сборка 1607 от 31.12.2017 // Внимание! Если программа не работает, обновите версию!
procedure MV(a:array[,] of integer; b,c:array of integer); begin for var i:=0 to b.Length-1 do c[i]:=a.Row(i).Zip(b,(p,q)->p*q).Sum; end;
begin var a:array[,] of integer:=((2,4,0),(-2,1,3),(-1,0,1)); var b:array of integer:=(1,2,-1); Writeln('Матрица A'); a.Println(3); Write('Вектор B: '); b.Println; var c:=new integer[3]; MV(a,b,c); Write('Вектор С: '); c.Println end.
smnoregrets
Стараюсь чтобы было совместимо с самым простым паскалем. А Write - для удобства. Задача то - сделать функцию которая перемножает. А не полностью ввод-вывод матрицы и вектора с кучей проверок
smnoregrets
R[row] = A[row,col]*B[col]. Вроде верно
Answers & Comments
// PascalABC.NET 3.3, сборка 1607 от 31.12.2017
// Внимание! Если программа не работает, обновите версию!
procedure MV(a:array[,] of integer; b,c:array of integer);
begin
for var i:=0 to b.Length-1 do
c[i]:=a.Row(i).Zip(b,(p,q)->p*q).Sum;
end;
begin
var a:array[,] of integer:=((2,4,0),(-2,1,3),(-1,0,1));
var b:array of integer:=(1,2,-1);
Writeln('Матрица A'); a.Println(3);
Write('Вектор B: '); b.Println;
var c:=new integer[3];
MV(a,b,c);
Write('Вектор С: '); c.Println
end.