Найти произведение матрицы на вектор - Pascal
Формулировка задачи:
Помогите исправить ошибку в программе. Пишу на pascal.
Надо найти произведение матрицы размером m n = на вектор размером
n.
Вот что я написал:
const n=6;
type
Matrica=Array[1..n,1..n] of Real;
Wector=Array[1..n] of Real;
var
i,j: Integer;
a: Matrica;
b,c: Wector;
Procedure Dobutoc(x: Matrica; y: Wector);
begin
for i:=1 to n do
begin
c[i]:=0;
for j:=1 to n do
c[i]:=c[i]+x[i,j]*y[i];
end;
end;
Procedure Out(x: Wector);
begin
for i:=1 to n do
writeln(x[i]:8:2);
end;
begin
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=random(100)/10-j;
b[i]:=random(100)/10-1;
end;
writeln('Матрица А:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5:1);
writeln;
end;
writeln('Вектор В:');
out(b);
writeln('Вектор С:');
Dobutoc(a,b);
Out(c);
end.
Ругается на 11-ю строку
Решение задачи: «Найти произведение матрицы на вектор»
textual
Листинг программы
const n=6;
type
Matrica=Array[1..n,1..n] of Real;
Wector=Array[1..n] of Real;
var
i,j: Integer;
a: Matrica;
b,c: Wector;
Procedure Dobutoc(x: Matrica; y: Wector);
begin
var i,j:integer;
for i:=1 to n do
begin
c[i]:=0;
for j:=1 to n do
c[i]:=c[i]+x[i,j]*y[i];
end;
end;
Procedure Out(x: Wector);
begin
var i:integer;
for i:=1 to n do
writeln(x[i]:8:2);
end;
begin
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=random(100)/10-j;
b[i]:=random(100)/10-1;
end;
writeln('Матрица А:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:5:1);
writeln;
end;
writeln('Вектор В:');
out(b);
writeln('Вектор С:');
Dobutoc(a,b);
Out(c);
end.
Объяснение кода листинга программы
- Объявляется константа
nсо значением 6. - Определяются типы данных
Matrica(матрица) иWector(вектор) как массивы реальных чисел. - Объявляются переменные
iиjтипа Integer для использования в циклах. - Создаются переменные
a(матрица),bиc(вектора) типаMatricaиWectorсоответственно. - Объявляется процедура
Dobutoc, которая принимает матрицу и вектор в качестве параметров и выполняет операцию умножения матрицы на вектор. - В процедуре
Dobutocобъявляются переменныеiиjтипа Integer для использования в циклах. - В цикле происходит вычисление произведения матрицы на вектор и сохранение результата в вектор
c. - Объявляется процедура
Out, которая выводит вектор на экран. - В процедуре
Outобъявляется переменнаяiтипа Integer для использования в цикле. - Выполняется основная часть программы, в которой:
a. Генерируется случайное значение для каждого элемента матрицы
aи вектораb. b. Выводится матрицаaна экран. c. Выводится векторbна экран. d. Выполняется умножение матрицыaна векторbс помощью процедурыDobutoc. e. Выводится векторc(результат умножения) на экран.