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;
Апр, школа №151 мурманской области вам: 1) 24 буквы + 8 цифр = 32 символа 2) 32 символа + 1 пробел = 33 символа 3) а так как для 32 символов нужно 5 бит, то для 33 символов нужно 6 бит ответ: i = 6 бит 2. здесь каждый раз придется задавать вопросы, чтобы уменьшить количество возможных вариантов. 1) больше или меньше 32? 2) больше или меньше 16? 3) больше или меньше 8? 4) больше или меньше 4? 5) больше или меньше 2? ответ: 5 вопросов. 3. не смогу . мне задали другое . удачи. 3 уже обеспечена : )
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