Задать вопрос
3 марта, 02:09

Даны две матрицы А (nxn) и B (nxn), а также два вектора х = (x1, x2, ..., xn) и y = (y1, y2, ..., yn). Написать программу нахождения скалярного произведения (Ах) * (Ву).

+5
Ответы (1)
  1. 3 марта, 04:05
    0
    Const

    n = 5;

    type

    tM = array[1 ... n, 1 ... n] of integer;

    tV = array[1 ... n] of integer;

    procedure ProdMV (a: tM; b: tV; var c: tV) ;

    var

    i, j, s: integer;

    begin

    for i : = 1 to n do

    begin

    s : = 0;

    for j : = 1 to n do s : = s + a[i, j] * b[j];

    c[i] : = s;

    end

    end;

    procedure SumV (a, b: tV; var c: tV) ;

    var

    i: integer;

    begin

    for i : = 1 to n do c[i] : = a[i] + b[i]

    end;

    procedure InitMatrix (var a: tM; p, q: integer) ;

    { Инициализация элементов случайными числами на [p; q]}

    var

    i, j, k: integer;

    begin

    k : = q - p + 1;

    for i : = 1 to n do

    for j : = 1 to n do

    a[i, j] : = Random (k) + p

    end;

    procedure InitVector (var a: tV; p, q: integer) ;

    { Инициализация элементов случайными числами на [p; q]}

    var

    i, k: integer;

    begin

    k : = q - p + 1;

    for i : = 1 to n do

    a[i] : = Random (k) + p

    end;

    procedure DisplayMatrix (a: tM; s: string) ;

    var

    i, j: integer;

    begin

    Writeln (s) ;

    for i : = 1 to n do

    begin

    for j : = 1 to n do Write (a[i, j]:5) ;

    Writeln

    end

    end;

    procedure DisplayVector (a: tV; s: string) ;

    var

    i: integer;

    begin

    Writeln (s) ;

    for i : = 1 to n do Write (a[i]:5) ;

    Writeln

    end;

    var

    A, B: tM;

    x, y, r, r1, r2: tV;

    begin

    Randomize;

    InitMatrix (A, - 50, 50) ;

    DisplayMatrix (A, 'Матрица А') ;

    InitMatrix (B, - 20, 65) ;

    DisplayMatrix (B, 'Матрица B') ;

    InitVector (x, - 10, 14) ;

    DisplayVector (x, 'Вектор x') ;

    InitVector (y, 5, 40) ;

    DisplayVector (y, 'Вектор y') ;

    ProdMV (A, x, r1) ;

    ProdMV (B, y, r2) ;

    { Для отладки раскомментарить две нижележащие строчки }

    { DisplayVector (r1,'Вектор r1') ;

    DisplayVector (r2,'Вектор r2') ; }

    SumV (r1, r2, r) ;

    DisplayVector (r, 'Вектор результата')

    end.

    Тестовое решение:

    Матрица А

    -19 27 30 25 - 14

    32 - 35 9 - 38 16

    -39 - 36 13 41 - 37

    7 - 18 - 8 35 - 10

    1 - 48 1 - 19 - 2

    Матрица B

    -15 62 - 18 58 62

    32 58 43 3 12

    15 11 39 - 20 - 16

    47 - 10 24 16 55

    -8 46 10 0 45

    Вектор x

    2 - 6 10 0 - 3

    Вектор y

    15 14 22 14 15

    Вектор результата

    2131 2776 1096 2214 1725
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Даны две матрицы А (nxn) и B (nxn), а также два вектора х = (x1, x2, ..., xn) и y = (y1, y2, ..., yn). Написать программу нахождения ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы