Найти произведение матрицы на вектор - 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
(результат умножения) на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д