Найти произведение матрицы на вектор - 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.

Объяснение кода листинга программы

  1. Объявляется константа n со значением 6.
  2. Определяются типы данных Matrica (матрица) и Wector (вектор) как массивы реальных чисел.
  3. Объявляются переменные i и j типа Integer для использования в циклах.
  4. Создаются переменные a (матрица), b и c (вектора) типа Matrica и Wector соответственно.
  5. Объявляется процедура Dobutoc, которая принимает матрицу и вектор в качестве параметров и выполняет операцию умножения матрицы на вектор.
  6. В процедуре Dobutoc объявляются переменные i и j типа Integer для использования в циклах.
  7. В цикле происходит вычисление произведения матрицы на вектор и сохранение результата в вектор c.
  8. Объявляется процедура Out, которая выводит вектор на экран.
  9. В процедуре Out объявляется переменная i типа Integer для использования в цикле.
  10. Выполняется основная часть программы, в которой: a. Генерируется случайное значение для каждого элемента матрицы a и вектора b. b. Выводится матрица a на экран. c. Выводится вектор b на экран. d. Выполняется умножение матрицы a на вектор b с помощью процедуры Dobutoc. e. Выводится вектор c (результат умножения) на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы