Найти произведение матрицы на вектор - Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите исправить ошибку в программе. Пишу на pascal. Надо найти произведение матрицы размером m n = на вектор размером n. Вот что я написал:
Листинг программы
  1. const n=6;
  2. type
  3. Matrica=Array[1..n,1..n] of Real;
  4. Wector=Array[1..n] of Real;
  5. var
  6. i,j: Integer;
  7. a: Matrica;
  8. b,c: Wector;
  9. Procedure Dobutoc(x: Matrica; y: Wector);
  10. begin
  11. for i:=1 to n do
  12. begin
  13. c[i]:=0;
  14. for j:=1 to n do
  15. c[i]:=c[i]+x[i,j]*y[i];
  16. end;
  17. end;
  18. Procedure Out(x: Wector);
  19. begin
  20. for i:=1 to n do
  21. writeln(x[i]:8:2);
  22. end;
  23. begin
  24. for i:=1 to n do
  25. for j:=1 to n do
  26. begin
  27. a[i,j]:=random(100)/10-j;
  28. b[i]:=random(100)/10-1;
  29. end;
  30. writeln('Матрица А:');
  31. for i:=1 to n do
  32. begin
  33. for j:=1 to n do
  34. write(a[i,j]:5:1);
  35. writeln;
  36. end;
  37. writeln('Вектор В:');
  38. out(b);
  39. writeln('Вектор С:');
  40. Dobutoc(a,b);
  41. Out(c);
  42. end.
Ругается на 11-ю строку

Решение задачи: «Найти произведение матрицы на вектор»

textual
Листинг программы
  1. const n=6;
  2. type
  3. Matrica=Array[1..n,1..n] of Real;
  4. Wector=Array[1..n] of Real;
  5. var
  6. i,j: Integer;
  7. a: Matrica;
  8. b,c: Wector;
  9. Procedure Dobutoc(x: Matrica; y: Wector);
  10. begin
  11. var i,j:integer;
  12. for i:=1 to n do
  13. begin
  14. c[i]:=0;
  15. for j:=1 to n do
  16. c[i]:=c[i]+x[i,j]*y[i];
  17. end;
  18. end;
  19. Procedure Out(x: Wector);
  20. begin
  21. var i:integer;
  22. for i:=1 to n do
  23. writeln(x[i]:8:2);
  24. end;
  25. begin
  26. for i:=1 to n do
  27. for j:=1 to n do
  28. begin
  29. a[i,j]:=random(100)/10-j;
  30. b[i]:=random(100)/10-1;
  31. end;
  32. writeln('Матрица А:');
  33. for i:=1 to n do
  34. begin
  35. for j:=1 to n do
  36. write(a[i,j]:5:1);
  37. writeln;
  38. end;
  39. writeln('Вектор В:');
  40. out(b);
  41. writeln('Вектор С:');
  42. Dobutoc(a,b);
  43. Out(c);
  44. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы