profile
Размещено 5 лет назад по предмету Информатика от rafikchanel

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

  1. Ответ на вопрос
    Ответ на вопрос дан smnoregrets
    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.
    1. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      3.3 1607 Только что проверил
    2. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Вопрос потому, что использовали фишку вывода всего массива оператором Write, чего нет больше ни в одной реализации паскаля, а вот остальное взяли из ТурбоПаскаль))
    3. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      Стараюсь чтобы было совместимо с самым простым паскалем. А Write - для удобства. Задача то - сделать функцию которая перемножает. А не полностью ввод-вывод матрицы и вектора с кучей проверок
    4. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      А еще меня смутило, что размерности несовместимы. Матрицу можно умножить только на вектор-столбец и получить вектор-столбец. Т.е. в Вашем варианте a[2,3] x b[2,1], а должно быть a[2,3] x b[3,1]
    5. Ответ на вопрос
      Ответ на вопрос дан smnoregrets
      R[row] = A[row,col]*B[col]. Вроде верно
  2. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    Сама процедура занимает 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.Println
    end.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.