• Написать процедуру с параметрами, обеспечивающую умножение матрицы на
    вектор

Ответы 7

  • 3.3 1607 Только что проверил
    • Автор:

      buddy64
    • 5 лет назад
    • 0
  • Вопрос потому, что использовали фишку вывода всего массива оператором Write, чего нет больше ни в одной реализации паскаля, а вот остальное взяли из ТурбоПаскаль))
  • Стараюсь чтобы было совместимо с самым простым паскалем. А Write - для удобства. Задача то - сделать функцию которая перемножает. А не полностью ввод-вывод матрицы и вектора с кучей проверок
  • А еще меня смутило, что размерности несовместимы. Матрицу можно умножить только на вектор-столбец и получить вектор-столбец. Т.е. в Вашем варианте a[2,3] x b[2,1], а должно быть a[2,3] x b[3,1]
    • Автор:

      brunorqjm
    • 5 лет назад
    • 0
  • R[row] = A[row,col]*B[col]. Вроде верно
    • Автор:

      noeleq8h
    • 5 лет назад
    • 0
  • PROGRAM MultiplyMatrix2Vector;// произведение матрицы на вектор. // R[m] = A[m,n]*B[n]const row = 2; col = 3;type matrix = array[1..row, 1..col] of byte; vect_mul = array[1..col] of byte; // вектор на который умножаем vect_res = array[1..row] of byte; // вектор с произведениемvar A:matrix := ( (3, 7, 5), (1, 0, 4) ); //матрица B:vect_mul := ( 1, 2, 3 ); // вектор на который умножаем R:vect_res; // вектор с произведением// m: количество рядов n: количество столбцов function mulMatVec(n,m:byte; var MX:matrix; var VR:vect_mul):vect_res;var i,j:byte; r:vect_res;begin for i:=1 to m do for j:=1 to n do R[i]:=R[i] + MX[i,j] * VR[j]; mulMatVec := R;end;BEGIN writeln('Матрица: ', A); writeln('Вектор: ', B); R := mulMatVec(3, 2, A, B); writeln('Произведение: ', R);END.
    answer img
  • Сама процедура занимает 5 строчек.// 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.Printlnend.
    answer img
    • Автор:

      makhi
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years